我想用仅使用Microsoft工具的PowerShell在Active Directory中testing是否存在计算机帐户。
使用Quest AD cmdlet,我可以这样做:
if (!(get-qadcomputer $name)){ Stuff }
就我get-adcomputer ,这不适用于get-adobject或get-adcomputer 。
有什么简单的,我失踪? 我已经看到了一些看似简单的解决scheme,可以捕获所有抛出的exception,但在某些情况下似乎可能会导致一些误报。
看看这个:
http://blogs.msdn.com/b/adpowershell/archive/2009/05/05/how-to-create-a-function-to-validate-the-existence-of-an-ad-object-test- xadobject.aspx
$c = Get-ADComputer <$ComputerName> if($c -eq $null) { ItDoesntExist } else { ItLives }
这应该做你需要的东西…你说这不是为你工作,为什么呢?
对不起,看起来像这个cmdlet实际上抛出一个exception,而不是简单地返回$null , 这里logging …,它也忽略-erroraction参数(向下滚动到链接页面上的评论)。
build议的解决方法:
$errorActionPreference = "SilentlyContinue" Get-ADComputer <$ComputerName>
或者更好,看看我的其他答案。
尝试删除它,并阅读返回代码?
(开个玩笑)
要通过DistinguishedNametestingAD对象,您可以使用以下方法:
[bool](Get-ADObject -Filter {DistinguishedName-eq "CN=Users,DC=domain,DC=local"})
或者,当你想通过另一个属性,如samaccountnamesearch:
[bool](Get-ADObject -Filter {sAMAccountname -eq "Administrator"})
两者都只会返回一个布尔值($ true或$ false),并且可以在条件逻辑中使用(if / else等)。