PowerShell-ErrorAction SilentlyContinue不适用于Get ADUser

PowerShell-ErrorAction SilentlyContinue不适用于Get ADUser,powershell,Powershell,我在获取-ErrorAction SilentlyContinue以使用cmdlet“Get ADUser”时遇到问题 这不起作用,显示错误时是否有-ErrorAction get-aduser "JSmith" -ErrorVariable Err -ErrorAction SilentlyContinue if ($Err){write-host "This is an error!!!!"} 这是有效的(在相同条件下,不会显示错误并以静默方式继续 get-childitem z

我在获取-ErrorAction SilentlyContinue以使用cmdlet“Get ADUser”时遇到问题

这不起作用,显示错误时是否有-ErrorAction

  get-aduser "JSmith" -ErrorVariable Err -ErrorAction SilentlyContinue
  if ($Err){write-host "This is an error!!!!"}
这是有效的(在相同条件下,不会显示错误并以静默方式继续

 get-childitem z: -ErrorVariable Err -ErrorAction SilentlyContinue
 if ($Err){write-host "This is an error!!!!"}

get实际上是由网关服务在DC上执行的,而错误处理的效果并不完全相同。幸运的是,Try/Catch确实起作用:

Try { get-aduser "JSmith" } 
  Catch { write-host "This is an error!!!!" }

mjolinor对显式过滤器的看法如下:

$Sam = "JSmith"

$userObj = get-aduser -filter {SamAccountName -eq $Sam} -erroraction silentlycontinue

如果找不到用户,
$userObj
将为空。这允许代码在不使用try/catch的情况下解决找不到的情况。

FYI:更改为just
catch[Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException]
将确保只捕获标识未找到的异常。另外,我编写了一个代理函数来返回null,而不是抛出异常,以避免在经常使用此cmdlet的地方添加try/catch块。这里的一篇帖子中有代码:(不太好,但它可以完成此任务).@JohnLBevan-您也可以通过使用显式筛选器来避免它。@mjolinor什么是DC?@ameliapond DC=域控制器