【PowerShell】GUIでフォルダを選択できるスクリプト|WPFの簡易フォーム表示

【PowerShell】GUIでフォルダを選択できるスクリプト|WPFの簡易フォーム表示 PowerShell

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は、非エンジニア向けのスクリプトや、バッチ処理の初期設定などに活用でき、実用性が高いテクニックです。