【发布时间】:2021-09-22 16:32:41
【问题描述】:
我正在更新我们的计算机 AD 连接脚本以检查 AD 中的重复对象,但遇到了一些问题。
我的主要问题是我想知道给定名称 (-Identity) 的 AD 计算机对象是否为空,而不是像我期望的那样简单地检查值(C# 背景)尝试检查时出现脚本错误,因为对象不存在。
当然,我的下一个尝试是设置 ErrorActionPreference。我只想使用 -ErrorAction 为这个 cmdlet 执行此操作,但无论出于何种原因,该 cmdlet 似乎完全忽略了该标志,而是无论如何都遵循 $ErrorActionPreference 变量。以下片段:
if ((Get-ADComputer -ErrorAction 'SilentlyContinue' -Identity "whatever") -eq $null) { Write-Host "success" }
但是使用上面的代码它不会继续。如果我将 $ErrorActionPreference 更改为 'SilentlyContinue' 或 Continue/Inquire 并告诉代码继续,它会完成并且没有按预期显示错误,但它没有完成 Write-Host。这意味着我可能在“if”之后放置的任何函数也不会完成。
我对 PowerShell 相当陌生,所以我确定我误解了其中一些功能如何处理错误。从我见过的其他一些 sn-ps 来看,我可能需要切换到 Try/Catch,但对于这种基本的东西来说,这感觉非常笨拙。任何指导将不胜感激。
【问题讨论】:
-
不熟悉 Get-ADComputer,但如果在 -identity 标志未找到任何内容时它会出错,则可以将其放入 try..catch 中,可以有效地复制您的 if 语句
标签: powershell error-handling active-directory