获取从资源管理器菜单到powershell变量的文件夹路径

时间:2012-07-10 11:44:43

标签: powershell explorer cmdlet

是否可以从powershell打开资源管理器窗口并将在资源管理器中选择的路径存储到变量?

从powershell打开资源管理器窗口

PS C:>资源管理器

6 个答案:

答案 0 :(得分:11)

也许这个脚本是你想要的:

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

答案 1 :(得分: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

答案 2 :(得分:1)

以上对我不起作用。使用Powershell版本2运行Windows 7。 我确实找到了以下内容,它允许弹出和选择:

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

以防其他人遇到同样的问题。

答案 3 :(得分:0)

只是想发布一个附录,我相信中间缺少一个管道|

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

和:

Out-Null

答案 4 :(得分:0)

这是打开资源管理器对话框窗口的解决方案,要求用户选择文件夹。然后将文件夹路径存储在名为“ path”的变量中:

Add-Type -AssemblyName System.Windows.Forms
$browser = New-Object System.Windows.Forms.FolderBrowserDialog
$null = $browser.ShowDialog()
$path = $browser.SelectedPathode

答案 5 :(得分: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