从powershell调用FolderBrowserDialog

时间:2008-10-19 19:15:01

标签: winforms powershell

this question类似,运行以下代码后,浏览器对话框会显示所有正确的按钮,但缺少通常显示可用文件夹的选择区域:

[void] [Reflection.Assembly]::LoadWithPartialName( 'System.Windows.Forms' )
$d = New-Object Windows.Forms.FolderBrowserDialog
$d.ShowDialog( )

3 个答案:

答案 0 :(得分:11)

我在前一段时间遇到此问题,并在MSDN论坛上找到以下COM解决方法:

$app = new-object -com Shell.Application
$folder = $app.BrowseForFolder(0, "Select Folder", 0, "C:\")
if ($folder.Self.Path -ne "") {write-host "You selected " $folder.Self.Path}

http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.dotnet.framework.windowsforms.controls&tid=3607557a-43b3-40bf-8276-be00526e0520&p=1

答案 1 :(得分:3)

我认为在MTA线程中运行PowerShell是个问题。您可以在STA(单线程单元)模式下运行版本2的CTP,它将启动正确的文件夹选择。它确实将菜单拉到shell窗口后面。

答案 2 :(得分:0)

仅供参考,如果您正在寻找Windows窗体的东西,目前有一款产品可用于PowerShell的Windows窗体(Admin Script Editor),而Sapien正在开发Forms Designer(已宣布)在PowerScripting Podcast)上,这可能会为您的脚本解决其中一些问题。