Аналогично этот вопрос , после запуска следующего кода появляется диалоговое окно браузера со всеми правильными кнопками, но отсутствует область выбора, в которой обычно отображаются доступные папки:
[void] [Reflection.Assembly]::LoadWithPartialName( 'System.Windows.Forms' ) $d = New-Object Windows.Forms.FolderBrowserDialog $d.ShowDialog( )
Я столкнулся с этой проблемой некоторое время назад и нашел следующий обходной путь COM на форумах MSDN:
$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
Я считаю, что это проблема с PowerShell, запущенным в потоке MTA. Вы можете запустить CTP версии 2 в режиме STA (однопотоковая квартира), и он выберет правильный выбор папки. Тем не менее, оно вытягивает меню за окном оболочки.
Только к вашему сведению, если вы хотите заняться Windows Forms, в настоящее время есть один продукт, который будет создавать формы Windows для PowerShell ( Admin Script Editor ), а Sapien работает над Конструктор форм (анонсирован на PowerScripting Podcast ), что может сгладить некоторые из этих проблем для вашего сценария.