仅使用 Microsoft 提供的 cmdlet 在 PowerShell 中测试 AD 对象是否存在

仅使用 Microsoft 提供的 cmdlet 在 PowerShell 中测试 AD 对象是否存在

我想仅使用 Microsoft 的工具通过 PowerShell 测试 Active Directory 中计算机帐户的存在。

使用 Quest AD cmdlet,我可以执行以下操作:

if (!(get-qadcomputer $name)){ Stuff }

据我所知,get-adobject这不起作用。get-adcomputer

我是否遗漏了一些简单的东西?我见过一些看起来很老套的解决方案,它们可以捕获所有抛出的异常,但在某些情况下,这似乎可能会产生一些误报。

答案1

答案2

$c = Get-ADComputer <$ComputerName>
if($c -eq $null) { ItDoesntExist } else { ItLives }

这应该正是您所需要的...您说它对您不起作用,究竟是为什么呢?


抱歉,看起来这个 cmdlet 实际上会引发异常,而不是$null像文档中所述那样简单地返回这里...并且它也忽略了-erroraction参数(向下滚动到链接页面上的评论)。

建议的解决方法:

$errorActionPreference = "SilentlyContinue"

Get-ADComputer <$ComputerName>

或者更好的是,看看我的其他答案。

答案3

尝试删除它并读取其返回代码?

(只是开玩笑。有点。)

答案4

$errored=$false
try { Add-ADGroupMember -Identity $SomeGroupName $SomeComputer  }
catch {
    $errored=$true
    Write-Output "$SomeComputer does not exist in AD,$_" | Tee-Object $errorLogFileName -Append
}
if ( $errored == $false) { 
    #either accept the computer is added to $SomeGroupName or delete it back out now that you know $someComputer exists
}

相关内容