如何丢弃PowerShell ActiveDirectory cmdlet的错误?

时间:2019-05-31 10:05:27

标签: powershell scripting

我正在编写PowerShell脚本(在PowerShell 5.1环境中),我需要列出文件夹权限中设置的组中的所有用户。但是某些组不相关,因此当我尝试在其上 Get-ADGroupMember 时,出现了预期的错误。

要丢弃此错误,我尝试了以下操作:

Get-ADGroupMember Fake_Group -Server ad.example.com 2>&1 $null
Get-ADGroupMember Fake_Group -Server ad.example.com 2>&1 | Out-Null

但是在两种情况下,结果都是相同的:显示错误。

get-aduser : Cannot find an object with identity: 'Fake_Group' under 'DC=example.com'.
At line:1 char:1
+ Get-ADGroupMember Fake_Group -Server ad.example.com 2>&1 | ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Fake_Group:ADGroup) [Get-ADGroupMember], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.GetADGroupMember

所以我的问题是:为什么仍然显示此错误?

然后,我怎么能抛弃此错误,还是有一种更好的方法从文件夹权限中设置的组中列出用户,而不仅仅是尝试对的整个结果进行 Get-ADGroupMember Get-Acl 甚至没有相关对象?

1 个答案:

答案 0 :(得分:1)

由于Out-Null在这方面没有执行任何操作,因此您将需要使用try / catch语句,甚至可能需要添加-ErrorAction Stop,因为并非AD命令中的所有错误都将终止错误:

Try{
    Get-ADGroupMember $GROUPNAME -Server $SEVRER -ErrorAction Stop
    #The group is found, do whatever you want here
}Catch{
    Write-Host "Some error occured"
}