0

我正在尝试使用 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/,我看不到实质性差异并且设置额外的 $form 属性没有没有帮助。

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

我正在使用 MDT 6.3.8443.1000

4

1 回答 1

0

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

cmd.exe /c powershell.exe "script.ps1 的完整路径"

过去,有人尝试使用 MDT Studio http://mdtwizardstudio.codeplex.com,但并没有预期的那么成功。

完全披露,自大约 2009 年至 2014 年以来,我一直没有靠近 System Center 和或 MDT,因此,我无法真正进一步了解这一点。然而,当我无法完成 X 或 Y 时,我总是会使用脚本。

于 2018-01-18T03:34:49.507 回答