PowerShellからエクスプローラーウィンドウを開き、エクスプローラーで選択したパスを変数に保存することは可能ですか?
PowerShellからエクスプローラーウィンドウを開くには
PS C:>エクスプローラー
PowerShellからエクスプローラーウィンドウを開き、エクスプローラーで選択したパスを変数に保存することは可能ですか?
PowerShellからエクスプローラーウィンドウを開くには
PS C:>エクスプローラー
たぶん、このスクリプトはあなたが望むものです:
Function Select-FolderDialog
{
param([string]$Description="Select Folder",[string]$RootFolder="Desktop")
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
Out-Null
$objForm = New-Object System.Windows.Forms.FolderBrowserDialog
$objForm.Rootfolder = $RootFolder
$objForm.Description = $Description
$Show = $objForm.ShowDialog()
If ($Show -eq "OK")
{
Return $objForm.SelectedPath
}
Else
{
Write-Error "Operation cancelled by user."
}
}
使用:
$folder = Select-FolderDialog # the variable contains user folder selection
選択した回答でのリフレクションの使用は少し厄介であることがわかりました。以下のリンクは、より直接的なアプローチを提供します
関連するコードをコピーして貼り付けます。
Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser.ShowDialog()
$FolderBrowser.SelectedPath
上記は私にはうまくいきませんでした。Powershellバージョン2でWindows7を実行している。ポップアップと選択を可能にする次のものを見つけました。
Function Select-FolderDialog
{
param([string]$Description="Select Folder",[string]$RootFolder="Desktop")
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") Out-Null
$objForm = New-Object System.Windows.Forms.FolderBrowserDialog
$objForm.Rootfolder = $RootFolder
$objForm.Description = $Description
$Show = $objForm.ShowDialog()
If ($Show -eq "OK")
{
Return $objForm.SelectedPath
}
Else
{
Write-Error "Operation cancelled by user."
}
}
他の人が同じ問題を抱えている場合に備えて。
補遺を投稿したかっただけですが、|
間にパイプが欠落していると思います。
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
と:
Out-Null
これは、エクスプローラダイアログウィンドウを開き、ユーザーにフォルダの選択を求めるソリューションです。次に、フォルダパスを「path」という名前の変数内に保存します。
Add-Type -AssemblyName System.Windows.Forms
$browser = New-Object System.Windows.Forms.FolderBrowserDialog
$null = $browser.ShowDialog()
$path = $browser.SelectedPathode
あなたのコードは、「。SelectedPathode」を「.SelectedPath」に置き換えた後でのみ機能しました。
Add-Type -AssemblyName System.Windows.Forms
$browser = New-Object System.Windows.Forms.FolderBrowserDialog
$null = $browser.ShowDialog()
$path = $browser.SelectedPath
それぞれのプロパティに関するドキュメントもあります-https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.folderbrowserdialog.selectedpath?view =net-5.0