powershell - 仅在使用 ISE 时才会出现确认对话框

标签 powershell active-directory

我们使用 AD 扩展属性之一将具有用户 ID 的组标记为该组的“所有者”。只有所有者可以请求对群组进行更改/添加等。

我有一个相当长的 PowerShell 脚本,但运行良好。它要求在对话框中输入用户登录名,轮询他们所在的组,在另一个对话框中显示该列表,当我从该列表中选择一个组时,它将确认该用户是否是该组的所有者团体。最后一个对话框给出"is"或“否”答案,并且当我通过 ISE 运行脚本时确实有效,但如果我只是通过命令行运行脚本或使用“使用 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。但需要出现该对话框,特别是当相关用户不拥有该组时。如果他们这样做了,这将是一个点击进入下一个功能的过程(这些功能还没有真正以内聚的形式编写。)

最佳答案

System.Windows.MessageBox type是 Windows 演示框架的一部分,包含在 PresentationFramework.dll 程序集中。

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

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

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

关于powershell - 仅在使用 ISE 时才会出现确认对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45086146/

相关文章:

windows - 执行策略修改

macos - Get-Process 在类中不起作用 [PowerShell]

Windows PowerShell。通过 PowerShell 命令运行程序

active-directory - LDAP 嵌套组成员资格过滤器

azure - AAD 通过身份验证需要在 AAD 中配置用户吗?

active-directory - 如何找出登录脚本所在的位置?

active-directory - 如何继续为 AWS Cognito 使用 AD FS SAML?

regex - PowerShell:在两个单词之间查找文本

powershell - 无法在脚本模块中创建 PowerShell 别名

linux - ldapsearch 获取特定 AD 组中的用户 (samAccountName) 列表