powershell - 无法在 Powershell 脚本中捕获 ADException

标签 powershell exception-handling active-directory

我正在使用 ActiveDirectory Powershell 模块将一些组添加到我们的域中。在此过程中,脚本可能会尝试将用户添加到他们已经是其成员的组中。这是一个我应该能够处理的异常,但是,我似乎无法捕捉到它。无论我做什么,我都会在 powershell 控制台中看到红色文本。

我将这一切简化为几个可测试的步骤。

New-ADGroup -Path "ou=temp,dc=domain,dc=tld" -GroupScope Global -Identity testGroup
Get-ADGroup -Identity testGroup | Add-ADGroupMember -Members testUser
try
{
    Get-ADGroup -Identity testGroup | Add-ADGroupMember -Members testUser
}
catch
{
    Write-Warning "Caught exception!"
}

我希望看到“捕获异常!”然而,在黄色文本中,我实际得到的是:
Add-ADGroupMember : The specified account name is already a member of the group At line:1 char:40
+ try {Get-ADGroup -Identity testGroup | Add-ADGroupMember -Members testUser} ca ...
+                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (CN=testGroup,OU=Temp,DC=domain,DC=tld:ADGroup) [Add-ADGroupMember], ADException
+ FullyQualifiedErrorId : The specified account name is already a member of the group,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember

全部用红色文字。

我希望我忽略了一些简单的事情。我会很感激任何意见。

编辑:按要求提供 PS 版本信息:
C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      3.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18331
BuildVersion                   6.2.9200.16481
PSCompatibleVersions           {1.0, 2.0, 3.0}
PSRemotingProtocolVersion      2.2

最佳答案

Add-ADGroupMember支持常用的 cmdlet 参数。我会尝试添加 -ErrorAction Stop看看这是否允许它被捕获。例如,这适用于其他 cmdlet,如 Get-Content。 :

try { gc "NotAFile.txt" } catch { write-warning $_ }

会写一个错误,但是
try { gc "NotAFile.txt" -ErrorAction Stop } catch { write-warning $_ }

写一个警告。

关于powershell - 无法在 Powershell 脚本中捕获 ADException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19123814/

相关文章:

windows - 从 Windows Server 2008 在 Linux 上执行管理任务

powershell - 具有预定义属性的对象实例化

c++ - 以简单的方式处理异常语法问题

c# - 无限循环使 TimeManager 无效

active-directory - LDAP DN 不区分大小写吗?

c# - 如何伪造 Active Directory?

powershell - 使用 if 语句检查变量是否为空返回错误

exception-handling - 你什么时候写你的异常处理程序?

linux - 尝试从 linux ldapsearch 命令获取 memberof 详细信息

Powershell ffmpeg