Teste a existência de um objeto AD no PowerShell usando apenas cmdlets fornecidos pela Microsoft

4

Eu quero testar a existência de uma conta de computador no Active Directory com o PowerShell usando apenas ferramentas da Microsoft.

Usando os cmdlets da Quest AD, posso fazer isso:

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

Isso não funciona com get-adobject ou get-adcomputer até onde eu sei.

Existe algo simples que estou perdendo? Eu vi algumas soluções de aparência hacky que prendem todas as exceções que são lançadas, mas parece que isso poderia fornecer alguns falsos positivos sob certas circunstâncias.

    
por MDMarra 14.09.2011 / 19:13

4 respostas

2

Dê uma olhada nisso:

    
por 14.09.2011 / 20:29
2
$c = Get-ADComputer <$ComputerName>
if($c -eq $null) { ItDoesntExist } else { ItLives }

Isso deve fazer exatamente o que você precisa ... você disse que não está funcionando para você, por que exatamente?

Desculpe, parece que esse cmdlet lança uma exceção em vez de simplesmente retornar $null , conforme documentado aqui ... e também ignora o parâmetro -erroraction (role até os comentários na página vinculada).

Solução alternativa sugerida:

$errorActionPreference = "SilentlyContinue"

Get-ADComputer <$ComputerName>

Ou melhor, veja minha outra resposta.

    
por 14.09.2011 / 19:48
0

Tente excluí-lo e leia o código de retorno para isso?

(Brincadeira. Mais ou menos.)

    
por 14.09.2011 / 20:38
0

Para testar um objeto AD em geral por DistinguishedName, você pode usar o seguinte:

[bool](Get-ADObject -Filter {DistinguishedName-eq "CN=Users,DC=domain,DC=local"})

Ou, quando você quiser pesquisar por outra propriedade, como samaccountname:

[bool](Get-ADObject -Filter {sAMAccountname -eq "Administrator"})

Ambos retornarão apenas um booleano ($ true ou $ false) e podem ser usados em lógica condicional (if / else, etc).

    
por 19.11.2014 / 14:05