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

以防其他人有同样的问题。

于 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 回答