使用ShowDialog时,PowerShell表单不可见,但仅在通过MDT启动时才可见

时间:2018-01-17 19:55:35

标签: forms powershell powershell-v4.0 showdialog mdt

我正在尝试使用PowerShell表单设置任务序列变量。

设置任务序列变量并控制ProgressUI非常简单,但是当涉及到表单本身时,它就不会出现。

将脚本减少到最小程度,这四行代码在从PowerShell运行时打开一个空白表单,但是从MDT任务序列操作运行相同的脚本"运行PowerShell脚本"不显示表单,此时阻止任务序列。我的猜测是表格是开放的,但只是不可见。

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$form = New-Object System.Windows.Forms.Form
$form.Add_Shown({$form.Activate()}) 
$dialogResult = $form.ShowDialog()

无意中我发现,如果我在ShowDialog()调用之前的任何地方添加以下行,则表单显示正确(因为它是一个空的GridView)

"" | Out-GridView

在线查看此示例http://www.scconfigmgr.com/2015/07/17/windows-forms-powershell-gui-template/,我看不到实质性差异,并设置额外的$表单属性并没有帮助。

有人可以对此提出任何建议吗?

我使用的是MDT 6.3.8443.1000

1 个答案:

答案 0 :(得分:0)

从我使用System Center和MDT开始,这是一个MDT特定问题,并且长期以来一直是一个痛点。唯一一致的解决方法是调用具有您要使用的表单/对话框的外部脚本。

cmd.exe / c powershell.exe" script.ps1"

的完整路径

当天早些时候,有些人试图使用MDT Studio http://mdtwizardstudio.codeplex.com,但它并没有像预期的那样成功。

完全披露,自2009年至2014年左右,我从未接近过系统中心和MDT,因此,我无法真正进一步了解这一点。然而,当我无法完成X或Y时,我总是在脚本中出现。