[Tips] ファイル選択ダイアログを使用する

PowerShell でファイル選択ダイアログを使用できるようにする関数を作成しました。

下記がそのコードです。

[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')

function global:Open-FileDialog(
    [string]$Path = ".",
    [string]$Filter= "全てのファイル(*.*)|*.*", 
    [string]$DialogTitle = "ファイルを選択してください",
    [switch]$Multi)
{
<#
.SYNOPSIS
ファイル選択ダイアログを表示します

.DESCRIPTION
ファイル選択ダイアログを表示し、ユーザーにファイルを選択させます

.PARAMETER Path
初期ディレクトリを指定します。指定しなかった場合はカレントディレクトリとなります。

.PARAMETER Filter
選択できるファイルの種類を指定します。

.PARAMETER DialogTitle
ダイアログタイトルを指定します

.PARAMETER Multi
Multiを指定すると、複数ファイルを選択できるようになります。

.INPUTS
なし。オブジェクトをパイプすることはできません。

.OUTPUTS
選択されたファイル

.EXAMPLE
C:\PS> Open-FileDialog "C:\Work"

初期ディレクトリを C:\Work にしてダイアログを表示します。

.EXAMPLE
C:\PS> Open-FileDialog -Filter "Excelファイル(*.xls,*.xlsx)|*.xls,*.xlsx" 

Excelファイル(*.xls, *.xlsx)のみを選択できるようにします。

.EXAMPLE
C:\PS> Open-FileDialog -DialogTitle "Excelファイルを選択してね"

ダイアログタイトルを「Excelファイルを選択してね」にします。

.EXAMPLE
C:\PS> Open-FileDialog -Multi

複数ファイルを選択できるようにします。

#>
    $dialog = New-Object System.Windows.Forms.OpenFileDialog
    $dialog.Filter = $Filter
    $dialog.InitialDirectory = $Path
    $dialog.Title = $DialogTitle
    
    #複数選択可能にするか?
    $dialog.MultiSelect = $Multi
    #if ($Multi) { $dialog.MultiSelect = $True}
    
    # ダイアログを表示
    if($dialog.ShowDialog() -eq "OK")
    {      
      #選択されたファイルを返す
      return $dialog.FileNames
    }
}

.NET Framework の OpenFileDialogクラスを使用しています。
この関数にはヘルプを含めておきました。
詳しい使い方は、下記のようにしてヘルプを参照ください。

help Open-FileDialog -Detailed

コメント

  1. […] About Author « [Tips] ファイル選択ダイアログを使用する […]

タイトルとURLをコピーしました