PowerShellのスクリプトにファイルをドラックアンドドロップする方法

コンピュータ

はじめに

PowerShellのスクリプトで引数を取る場合CUIでファイル名を指定するのもよいですがファイルをドラックアンドドロップ出来てほしい場面もあります。
やり方としてはps1ファイルへのショートカットを作成してそちらにファイルをドラックアンドドロップすると引数としてファイル名が引き渡されスクリプトが実行されます。
ショートカットのリンク先は以下のように記述します。
powershell.exe -NoProfile -File (ps1ファイルへのパス)

せっかくですのでショートカットを作るスクリプトを作ってみました。

PowerShellスクリプトを初めて実行する場合

PowerShellスクリプトの実行を許可してください。
Powershellのps1ファイルを実行する方法
はじめに WindowsのコマンドラインインターフェースであるPowershellはコマンド操作をテキストファイルに記述したスクリプトファイルを実行することが出来ます。 Microsoft Excelで言うところのマクロのような物で...

ショートカットを作るスクリプト

スクリプトのソース

<#
# デスクトップにps1ファイルのショートカットを作成
#
# ファイル名: Create-Shortcut.ps1
#>

$src = $Args[0]

$basename = [System.IO.Path]::GetFileNameWithoutExtension($src);
$dst = (Join-Path "${env:USERPROFILE}`\Desktop"  "${basename}.lnk")

echo "${src} ${dst}"

$wsh = New-Object -ComObject WScript.Shell
$shortcut = $wsh.CreateShortcut($dst)
$shortcut.TargetPath = "${PSHOME}`\powershell.exe"
$shortcut.Arguments = "-NoProfile -File ${src}"
$shortcut.IconLocation = "${PSHOME}`\powershell.exe"
$shortcut.WindowStyle = 7
$shortcut.Save()

スクリプトの使い方

PowerShellで.\Create-Shortcut.ps1 (ショートカット化したいps1ファイルのパス)を実行。パスは絶対パスをセットしてください。

引数をメッセージボックスで表示するスクリプト

スクリプトのソース

<#
# 引数をメッセージボックスで表示するスクリプト
# ファイル名:SampleDandD.ps1
#>
Add-Type -Assembly System.Windows.Forms

$file = $Args[0];

# メッセージボックスの表示
[System.Windows.Forms.MessageBox]::Show("${file}", "引数の値")

スクリプトの使い方

保存したSampleDanD.ps1をCreate-Shortcut.ps1でデスクトップにショートカットを作成してください。
デスクトップに出来上がったショートカットに適当なファイルをドラックアンドドロップしてください。

メッセージボックスにドラックアンドドロップしたファイルのパスが表示されれば成功です。

スクリプトの実行環境

プロダクト名
Windows 10 Home
ビルド番号
17763.316
Powershellバージョン
5.1.17763.316
.NET Framework
.NET Framework 4.7.2

スポンサーリンク


コメント