PowerShellではコマンドライン操作が基本ですが、ユーザーにフォルダやファイルを選択させたい場合には、GUIを使ったフォーム表示が便利です。この記事では、WPF(Windows Presentation Foundation)と.NETのクラスを利用して、フォルダ選択ダイアログを表示する方法を解説します。バッチ処理やログ保存先の指定などに役立ちます。
基本スクリプト:FolderBrowserDialogを使用
Add-Type -AssemblyName System.Windows.Forms
$dialog = New-Object System.Windows.Forms.FolderBrowserDialog
$dialog.Description = "フォルダを選択してください"
$dialog.ShowNewFolderButton = $true
$result = $dialog.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
$selectedPath = $dialog.SelectedPath
Write-Output "選択されたフォルダ: $selectedPath"
} else {
Write-Output "キャンセルされました"
}
このスクリプトは、ユーザーにフォルダを選択させ、そのパスを取得します。
スクリプトを実行する際の注意点
- PowerShellはWindows環境での実行を前提としています
- Windows Formsの機能は、PowerShell 5.x(.NET Framework)で使用可能です
- PowerShell Core(6.x 以降)では WPF/Forms は非対応のため、Windows専用です
選択したフォルダを別処理に連携する例
# 例:フォルダ内のすべてのファイルを列挙
if ($selectedPath) {
Get-ChildItem -Path $selectedPath -File | ForEach-Object {
Write-Output "ファイル: $($_.FullName)"
}
}
ファイル選択ダイアログを使いたい場合
ファイル選択用のGUIも同様に OpenFileDialog
を使って実装できます:
$ofd = New-Object System.Windows.Forms.OpenFileDialog
$ofd.Filter = "テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*"
$ofd.Title = "ファイルを選択してください"
if ($ofd.ShowDialog() -eq "OK") {
Write-Output "選択されたファイル: $($ofd.FileName)"
}
まとめ
PowerShellはGUI要素を持たないと思われがちですが、.NETのクラスを活用することで、簡易的なダイアログやフォーム表示も実現できます。フォルダ選択のGUIは、非エンジニア向けのスクリプトや、バッチ処理の初期設定などに活用でき、実用性が高いテクニックです。