So finden Sie Computerkonten, die in AD nicht mehr benötigt werden

So finden Sie Computerkonten, die in AD nicht mehr benötigt werden

Ich bin neu in dieser Position und finde, dass die AD-Struktur einer gründlichen Reinigung bedarf. Es gibt mehr als doppelt so viele Computerkonten wie Mitarbeiter, Server nicht einmal mit eingerechnet. Ich möchte wissen, welche davon noch gültig sind und welche ohne Konsequenzen gelöscht werden können.

Ich habe das Tool von Joeware, OldComp, gefunden. Es sieht ziemlich praktisch aus, aber ich muss wohl ein bisschen besser verstehen, wonach es sucht ... wenn es nach Computern sucht, die älter als 90 Tage sind, heißt das dann, dass sie seit 90 Tagen nicht mehr an das Netzwerk angeschlossen waren? Der Grund dafür ist, dass ich nicht versehentlich einen Laptop von einer Außenstelle trennen möchte, der vielleicht als Backup auf einem Regal steht, weil ich denke, es sei ein „alter“ Computer, obwohl er in Wirklichkeit nur nicht angeschlossen ist und gerade verwendet wird. Vielleicht lohnt es sich aber nicht, sich darüber Gedanken zu machen, für den seltenen Fall, dass das passieren könnte ...

Wenn jemand eine andere Möglichkeit kennt oder ein gutes Beispiel dafür hat, wie man das am besten bewerkstelligen kann, wäre ich jedenfalls dankbar für einen Einblick. Im Endeffekt möchte ich einfach Computerkonten loswerden, die nicht mehr verwendet werden. Danke.

Antwort1

Oldcmpist für seine Funktion bekannt und funktioniert gut für die erste und gelegentliche Bereinigung.
Wenn Sie im Laufe der Zeit einen automatisierten Prozess wünschen, können Sie Powershell (sehr empfehlenswert) verwenden, um einen automatisierten Prozess dafür zu schreiben. Unser aktuelles Skript führt beispielsweise Folgendes aus:

  • Findet alte Konten anhand der lastLogonTimeStampVerwendungget-ADcomputer
  • deaktiviert sie nach 60 Tagen
  • löscht sie nach 90 Tagen
  • Protokolliert alles, was es tut

Darüber hinaus verwenden wir das Flag ProtectFromAccidentialDeletion für das Konto, wenn wir nicht möchten, dass es gelöscht wird.

Antwort2

Es gibt keine Methode, mit der man zwischen einer Maschine unterscheiden kann, die weg ist und nicht mehr existiert, und einer, die unbenutzt im Regal steht. Verwenden Sie also OldComp für die Bereinigung und kümmern Sie sich um die Einzelstücke, falls und wenn sie auftauchen.

Antwort3

Warum nicht PowerShell?

    $Computers =  ([ADSISearcher]"(&(objectCategory=computer)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))").FindAll()
    $Computers = $Computers | ForEach { $_.Path }
    $Age = $(Get-Date).AddDays(-90)

    $StaleComputerAccounts = @()
    $NeverUsedComputerAccounts = @()


    ForEach ($Computer in $Computers) {

        $ComputerObj = [ADSI]$Computer


        if ($ComputerObj.lastLogon) {

            $LastLogon = [DateTime]::FromFileTime($ComputerObj.ConvertLargeIntegerToInt64($ComputerObj.lastlogon[0]))
            if ( $LastLogon -lt $Age ) {

                $StaleComputerAccounts += $Computer

            }

        }
        else {

            $NeverUsedComputerAccounts += $Computer

        } 

}


Sie sollten am Ende eine Liste mit $StaleComputerAccountsund haben $NeverUsedComputerAccounts, die Sie dann mit weiteren PowerShell-Befehlen bearbeiten können. Ich mache es gerne so:

$TargetOU = "OU=Computers,OU=Disabled,OU=,DC=CONTOSO,DC=com"
$OUObj = [ADSI]"LDAP://$TargetOU"


ForEach ($Computer in $StaleComputerAccounts) {

    $ComputerObj = [ADSI]$Computer
    $ComputerObj.PSBase.MoveTo($OUObj)
    $ComputerObj.InvokeSet("accountDisabled", $True)
    $ComputerObj.SetInfo()

}



Es gibt keine magische Möglichkeit, programmgesteuert zwischen einem Computer zu unterscheiden, der nicht ordnungsgemäß außer Betrieb genommen wurde (niemand hat ihn aus Active Directory entfernt, als er offline war) und einem Laptop, der auf dem Schreibtisch eines Vorgesetzten steht. Wenn Sie vorsichtig vorgehen möchten, können Sie das Konto einfach deaktivieren und es an eine bestimmte Organisationseinheit senden, wie ich es tue.

verwandte Informationen