2016-07-26 15 views
-1

In PowerShell ich folgende LDAP query verwenden, um die Active Directory-Eigenschaften eines Hostnamen abzuzurufen:LDAP Useraccountcontrol atttribute

$Filter = "(&(ObjectCategory=Computer)(ObjectClass=Computer)(CN=$ComputerName))" 
if ($Found = ([ADSISEARCHER]$Filter).FindOne()) { 
    $Details = $Found.GetDirectoryEntry() 
} 

Sobald ich diese Eigenschaften Ich mag wäre zu prüfen, ob das Computerkonto deaktiviert ist. Die folgende LDAP query ist mir erlaubt, das zu tun:

$Filter = "(&(objectCategory=computer)(userAccountControl:1.2.840.113556.1.4.803:=2)(CN=$ComputerName))" 
([ADSISEARCHER]$Filter).FindOne() 

Was Ich mag möchte wissen, wie kann ich mit dem zweiten LDAP query und verwenden zu erhalten $True oder $False, wenn der Computer die Variable $Details vom ersten LDAP query vermeiden Konto ist deaktiviert?

Ich fand einige extra information, aber ich kann nicht scheinen, die Stücke zusammen zu setzen.

Vielen Dank für Ihre Hilfe.

+0

ist es erforderlich, LDAP-Abfragen zu verwenden oder Sie können auch das ActiveDirectory-Modul in Powershell verwenden? – Deptor

+0

Nein, das 'ActiveDirectory' ist nicht verfügbar. – DarkLite1

Antwort

1

Die Informationen, nach denen Sie suchen, sind in der userAccountControl des Verzeichniseintragsobjekts codiert. Allerdings enthält die Eigenschaft ein Array mit einem numerischen Wert, also Sie müssen überprüfen, ob der „disabled“ flag (numerische Wert 2) in dem ersten Array-Elemente festgelegt ist:

$disabled = [bool]($Details.userAccountControl[0] -band 2) 
+0

Ich habe das versucht, aber es funktioniert nicht. Wenn ich es auf einem Computer-Account-Namen versuche, der "Aktiviert" ist, bekomme ich "FALSCH" und wenn ich es auf "Deaktiviert" versuche, bekomme ich "FALSCH" zu. – DarkLite1

+0

Kann nicht reproduziert werden. Wenn ich das obige auf einem deaktivierten Computer verwende, bekomme ich '$ true'. Wenn der Computer aktiviert ist, bekomme ich '$ false'. Was ist die Ausgabe von '$ Details | fl * 'für einen Computer, wo es nicht für dich funktioniert? –

+0

Es war ein Fehler in meinem Testprozess. Du hast Recht, das funktioniert perfekt! Danke für Ihre Hilfe. – DarkLite1