5

PowerShellからエクスプローラーウィンドウを開き、エクスプローラーで選択したパスを変数に保存することは可能ですか?

PowerShellからエクスプローラーウィンドウを開くには

PS C:>エクスプローラー

4

6 に答える 6

13

たぶん、このスクリプトはあなたが望むものです:

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
于 2012-07-10T11:57:17.480 に答える
4

選択した回答でのリフレクションの使用は少し厄介であることがわかりました。以下のリンクは、より直接的なアプローチを提供します

http://www.powershellmagazine.com/2013/06/28/pstip-using-the-system-windows-forms-folderbrowserdialog-class/

関連するコードをコピーして貼り付けます。

Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser.ShowDialog()
$FolderBrowser.SelectedPath
于 2015-02-07T18:35:51.677 に答える
1

上記は私にはうまくいきませんでした。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."
     }
    }

他の人が同じ問題を抱えている場合に備えて。

于 2013-05-20T18:21:07.947 に答える
0

補遺を投稿したかっただけですが、|間にパイプが欠落していると思います。

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

と:

Out-Null
于 2017-05-30T18:10:04.863 に答える
0

これは、エクスプローラダイアログウィンドウを開き、ユーザーにフォルダの選択を求めるソリューションです。次に、フォルダパスを「path」という名前の変数内に保存します。

Add-Type -AssemblyName System.Windows.Forms
$browser = New-Object System.Windows.Forms.FolderBrowserDialog
$null = $browser.ShowDialog()
$path = $browser.SelectedPathode
于 2020-06-08T21:14:54.210 に答える
0

あなたのコードは、「。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

于 2021-04-02T12:16:06.610 に答える