Help us understand the problem. What is going on with this article?

PowerShell でファイル選択ダイアログを利用する

More than 1 year has passed since last update.

ブログからの転載

意外と使い勝手が良さそうなのがこの方法だと思う。

画像ファイルを1つ選択選択させる

[void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")

$dialog = New-Object System.Windows.Forms.OpenFileDialog
$dialog.Filter = "画像ファイル(*.PNG;*.JPG;*.GIF)|*.PNG;*.JPG;*.JPEG;*.GIF"
$dialog.InitialDirectory = "C:\"
$dialog.Title = "ファイルを選択してください"
# 複数選択を許可したい時は Multiselect を設定する
$dialog.Multiselect = $true

# ダイアログを表示
if($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK){
    # 複数選択を許可している時は $dialog.FileNames を利用する
    Write-Output ($dialog.FileName + " が選択されました。")
}

CSV ファイルを選択する

こういうパターンあるかな?と思う。
普段はタスクスケジューラーでキックしているけど、失敗したら手動で動かすとか。

Param(
  [Parameter()]
  [String] $FilePath
)

# $FilePath が設定されていない、又はファイルが存在しない
if([string]::IsNullOrEmpty($FilePath) -Or (Test-Path -LiteralPath $FilePath -PathType Leaf) -eq $false) {
    [void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")    
    $dialog = New-Object System.Windows.Forms.OpenFileDialog
    $dialog.Filter = "CSV ファイル(*.CSV)|*.CSV"
    $dialog.InitialDirectory = "C:\"
    $dialog.Title = "ファイルを選択してください"

    # キャンセルを押された時は処理を止める
    if($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::NG){
        exit 1
    }

    # 選択したファイルパスを $FilePath に設定
    $FilePath = $dialog.FileName
}

# ここから下で $FilePath をいい感じで処理する
Write-Output $FilePath
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away