在我看来,对话框实际上打开得很好,但它位于 powershell 控制台窗口的后面。不幸的是,它没有显示在任务栏中,因此除非您移动 powershell 窗口或 Alt+Tab,否则没有迹象表明它存在。看来 ShowHelp 解决方法对我没有任何影响。
编辑这是一种使用辅助形式想法的方法。基本思想是创建一个新表单,从其 Shown 事件中打开 OpenFileDialog。关键是在打开对话框之前在窗体上调用Activate,使窗体来到最前面并出现对话框。我通过将 Location 设置为屏幕外值将表单移到屏幕外,但您也可以从 Shown 事件内部设置 Form.Visible = $false。
[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()