只有在使用ISE时才会出现确认对话框

时间:2017-07-13 16:17:05

标签: powershell active-directory

我们使用其中一个AD扩展程序属性来标记具有用户ID的组作为该组的“所有者”。只有业主可以向集团申请变更/增加等。

我有一个相当冗长的PowerShell脚本,效果很好。它在对话框中询问用户登录名,轮询他们所在的组,在另一个对话框中显示该列表,当我从该列表中选择一个组时,它将确认该用户是否是该用户的所有者组。当我通过ISE运行脚本时,最后一个对话框给出YES或NO答案,并且DOES WORK,但如果我只是通过命令行运行脚本或使用'运行PowerShell',则不会显示最终答案'选项。

这是有问题的代码。如果人们认为有必要参考,我会抛弃整个脚本。

#Declares if the user is an owner of selected group or not.

if ($match -eq $False) {
    #write-host "The user $user IS NOT an owner of $group"
    [System.Windows.MessageBox]::Show("The user $user IS NOT an owner of $group")
}
else
{
    #write-host "The user $user DOES own $group"
    [System.Windows.MessageBox]::Show("The user $user DOES own $group")
}

此脚本的原因最终是因为用户可以自行提供一些基本的组处理请求。添加新成员,删除成员,甚至将组移动到另一个OU。但是需要出现对话框,特别是如果有问题的用户不拥有该组。如果他们这样做,那将是对下一个功能的点击(它们实际上并没有以一种有凝聚力的形式写出来。)

1 个答案:

答案 0 :(得分:4)

System.Windows.MessageBox type是Windows Presentation Framework的一部分,包含在PresentationFramework.dll程序集中。

确保在调用MessageBox.Show()之前将其加载到会话中:

Add-Type -AssemblyName PresentationFramework
# Now you can use [System.Windows.MessageBox]

它在ISE中工作的原因可能是ISE本身已经是WPF应用程序,因此PresentationFramework程序集已经加载到它的AppDomain中