この質問と同様に、次のコードを実行した後、ブラウザー ダイアログには正しいボタンがすべて表示されますが、通常は使用可能なフォルダーを表示する選択領域がありません。
[void] [Reflection.Assembly]::LoadWithPartialName( 'System.Windows.Forms' )
$d = New-Object Windows.Forms.FolderBrowserDialog
$d.ShowDialog( )
この質問と同様に、次のコードを実行した後、ブラウザー ダイアログには正しいボタンがすべて表示されますが、通常は使用可能なフォルダーを表示する選択領域がありません。
[void] [Reflection.Assembly]::LoadWithPartialName( 'System.Windows.Forms' )
$d = New-Object Windows.Forms.FolderBrowserDialog
$d.ShowDialog( )
しばらく前にこの問題に遭遇し、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}
MTAスレッドで実行されているPowerShellの問題だと思います。バージョン2のCTPをSTA(シングルスレッドアパートメント)モードで実行すると、適切なフォルダーが選択されます。ただし、シェルウィンドウの後ろにメニューが表示されます。
参考までに、Windows フォーム関連の作業を検討している場合、PowerShell 用の Windows フォームを実行する製品が現在 1 つ出回っており (The Admin Script Editor )、Sapien はフォーム デザイナーに取り組んでいます( PowerScripting Podcastで発表)。スクリプトのこれらの問題のいくつかをスムーズにします。