get a folder path from the explorer menu to a powershell variable

后端 未结 5 835
忘掉有多难
忘掉有多难 2021-01-19 04:42

is it possible to open a explorer window from powershell and store the path selected in the explorer, to a variable?

to open explorer window from powershell

相关标签:
5条回答
  • 2021-01-19 05:05

    Maybe this script is what you want:

    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."
            }
        }
    

    Use as:

    $folder = Select-FolderDialog # the variable contains user folder selection
    
    0 讨论(0)
  • 2021-01-19 05:06

    I found the use of reflection in the selected answer to be a little awkward. The link below offers a more direct approach

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

    Copy and pasted relevant code:

    Add-Type -AssemblyName System.Windows.Forms
    $FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
    [void]$FolderBrowser.ShowDialog()
    $FolderBrowser.SelectedPath
    
    0 讨论(0)
  • 2021-01-19 05:12

    Just wanted to post an addendum, I believe there is a pipe | missing from in-between:

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

    and:

    Out-Null
    
    0 讨论(0)
  • 2021-01-19 05:26

    The above did not work for me. Running Windows 7 with Powershell Version 2. I did find the following, which did allow the pop-up and selection:

        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."
         }
        }
    

    Just in case others have the same issues.

    0 讨论(0)
  • 2021-01-19 05:26

    Here is a solution that opens explorer dialog window, asking user to select a folder. Then stores the folder path inside a variable named "path":

    Add-Type -AssemblyName System.Windows.Forms
    $browser = New-Object System.Windows.Forms.FolderBrowserDialog
    $null = $browser.ShowDialog()
    $path = $browser.SelectedPathode
    
    0 讨论(0)
提交回复
热议问题