引き続き PowerShell の書き方について。
スクリプトの中で、特定のファイルを指定したいことがあります。例えば、保存してあるルーターのコンフィグレーションファイルを指定して読み込みたいような場合ですね。
ファイルダイアログボックスを開いて、ファイルを指定して、変数にパスを取り込みたい訳です。
当然、このような要求はあるはずですので検索してみたところ、親切な解説とサンプルが見つかりました。というか、MSのサイトじゃん。
https://gallery.technet.microsoft.com/scriptcenter/5481e36a-8073-40ae-92cd-fbef1e6df99a
これをそのまま使うと、簡単。
緑色の部分が、関数の定義。-initialDirectory を指定すると、最初に開くフォルダーを指定できます。
Function Get-FileName($initialDirectory)
{
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.initialDirectory = $initialDirectory
$OpenFileDialog.filter = "All files (*.*)| *.*"
$OpenFileDialog.ShowDialog() | Out-Null
$OpenFileDialog.filename
}
$working_dir="C:\Users\me\Documents"
$file_path=Get-FileName -initialDirectory "$working_dir"
echo $file_path
こんな感じで、変数 $file_path に指定したファイルのフルパスが入りますので、あとは自由に利用できます。