2008-10-19 2 views
3

Подобно this question, после выполнения следующего кода диалоговое браузер появляется все правильные кнопки, но область выбора, которая Usally отображает доступные папки отсутствует:вызов FolderBrowserDialog из PowerShell

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

Если кто-то заинтересован, это то, что я использовал его для: HTTP: // stackoverflow.com/questions/182573/powershell-cli-or-gui-which-do-you-need-or-prefer#216936 – 2008-10-21 15:09:07

ответ

11

я столкнулся с этой проблемой некоторое время назад и нашел следующий 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

3

Я считаю, что это проблема с PowerShell, работающая в потоке MTA. Вы можете запустить CTP версии 2 в режиме STA (однопоточная квартира), и он поднимет правильный выбор папки. Однако он вытаскивает меню за окно оболочки.

+0

Я пробовал это сначала в Vista с CTP2, где я мог бы работать с ним в режиме STA. В XP с V1 я не смог заставить это работать. – 2008-10-19 20:03:15

+0

Ограничение STA имеет смысл. , , с нетерпением ожидая выпуск версии PS v2;) – 2008-10-19 20:21:07

0

Просто FYI, если вы хотите делать вещи Windows Forms, есть один продукт в настоящее время, что будет делать окно формы для PowerShell (The Admin Script Editor) и Sapien работают над Forms Designer (объявлено о PowerScripting Podcast), которые могли бы сгладить некоторые из этих проблем для вашего скрипта.

Смежные вопросы