Мне кажется, что диалог на самом деле открывается просто отлично, но он находится за окном консоли PowerShell. К сожалению, он не отображается на панели задач, поэтому нет никаких признаков того, что он есть, если вы не переместите окно powershell или Alt + Tab. Также кажется, что обходной путь ShowHelp не имел никакого эффекта для меня.
РЕДАКТИРОВАТЬ Вот способ сделать это, используя вашу идею вторичной формы. Основная идея заключается в создании новой формы, которая открывает OpenFileDialog из его события Shown. Клавиша вызывает Активировать на форме перед открытием диалога, так что форма выходит вперед и диалоговое окно появляется. Я переместил форму за пределы экрана, установив для Location значение вне экрана, но вы можете альтернативно установить Form.Visible = $ false из события Shown.
[void] [Reflection.Assembly]::LoadWithPartialName( 'System.Windows.Forms' )
$ofn = New-Object System.Windows.Forms.OpenFileDialog
$outer = New-Object System.Windows.Forms.Form
$outer.StartPosition = [Windows.Forms.FormStartPosition] "Manual"
$outer.Location = New-Object System.Drawing.Point -100, -100
$outer.Size = New-Object System.Drawing.Size 10, 10
$outer.add_Shown( {
$outer.Activate();
$ofn.ShowDialog( $outer );
$outer.Close();
} )
$outer.ShowDialog()