Damit sich ein Benutzer auf einem Computer anmelden und auf Netzwerk- und domänenbasierte Ressourcen zugreifen kann, muss dieser Computer Mitglied der Active Directory-Umgebung sein. In dieser Anleitung zeigen wir Ihnen, wie Sie Routineaufgaben im Zusammenhang mit Computerkonten automatisieren. Hierzu gehören beispielsweise das Erstellen, Umbenennen und Entfernen von Konten.
Sie erfahren, wie Sie mit PowerShell die folgenden Aufgaben zur Verwaltung von Computerkonten ausführen:
- Verbinden eines Computers mit einer Domäne
- Verbinden mehrerer Computer mit einer Domäne
- Entfernen eines Computers aus einer Domäne mit PowerShell
- Erstellen eines Computerobjekts in Active Directory
- Erstellen von Computerkonten auf der Grundlage einer CSV-Datei
- Entfernen eines Computers aus Active Directory
- Entfernen von Computerkonten mithilfe einer Liste
- Entfernen veralteter Computerkonten in Active Directory mit PowerShell
- Umbenennen eines Computers
- Umbenennen eines Computers und Verbinden mit einer Domäne
- Deaktivieren eines Active Directory-Computerkontos
- Deaktivieren von Computerkonten mithilfe einer Liste
- Zurücksetzen eines Active Directory-Computerkontos
Die PowerShell ISE ist für die Arbeit mit PowerShell-Skripts am besten geeignet. Starten Sie die PowerShell ISE mit Administratorrechten, indem Sie „Windows+R“ drücken und im Fenster „Ausführen“ den Befehl „runas /profile /user:Administrator PowerShell_ISE“ eingeben. Alternativ können Sie mit der rechten Maustaste auf das Symbol für die PowerShell ISE klicken und die Option „Als Administrator ausführen“ wählen. Geben Sie bei der entsprechenden Aufforderung das Administratorkennwort ein.
Für die Arbeit mit Active Directory und seinen Objekten müssen Sie das Active Directory-Modul für Windows PowerShell importieren. Unter Microsoft Windows Server 2008 R2 aktivieren Sie dieses Modul mit folgendem Befehl:
Import-Module ActiveDirectory
Unter Microsoft Windows Server 2012 und höheren Versionen ist dieses Modul bereits standardmäßig aktiviert.
Verbinden eines Computers mit einer Domäne
Die häufigste Aufgabe ist das Verbinden eines Computers mit einem Domänen-Controller. Um einen PC mit einer Active Directory-Domäne zu verbinden, führen Sie das folgende PowerShell-Skript darauf aus:
$dc = "ENTERPRISE" # Specify the domain to join. $pw = "Password123" | ConvertTo-SecureString -asPlainText –Force # Specify the password for the domain admin. $usr = "$dc\T.Simpson" # Specify the domain admin account. $creds = New-Object System.Management.Automation.PSCredential($usr,$pw) Add-Computer -DomainName $dc -Credential $creds -restart -force -verbose # Note that the computer will be restarted automatically.
Der Computer startet daraufhin neu und verbindet sich mit der Domäne. Er wird zum Standardcontainer hinzugefügt.
Um einen Computer remote mit einem Domänen-Controller zu verbinden, müssen Sie das Skript wie folgt erweitern:
$dc = "ENTERPRISE" $pw = "Password123" | ConvertTo-SecureString -asPlainText -Force $usr = "$dc\T.Simpson" $pc = "R07GF" # Specify the computer that should be joined to the domain. $creds = New-Object System.Management.Automation.PSCredential($usr,$pw) Add-Computer -ComputerName $pc -LocalCredential $pc\admin -DomainName $dc -Credential $creds -Verbose -Restart -Force
Mit der Variablen $pc und dem Parameter –LocalCredential wird der Computer in der Domäne authentifiziert. Um diese Methode verwenden zu können, müssen Sie die Firewall auf dem lokalen Computer deaktivieren.
Verbinden mehrerer Computer mit einer Domäne
Sie können mehrere Computer gleichzeitig mit der Domäne verbinden, indem Sie sie entweder in der Befehlszeile als durch Trennzeichen getrennte Liste angeben oder ihre Namen aus einer Textdatei importieren.
So geben Sie die Computer in einer durch Trennzeichen getrennten Liste an:
$dc = "ENTERPRISE" $pw = "Password123" | ConvertTo-SecureString -asPlainText -Force $usr = "$dc\T.Simpson" $pc = "WKS034, WKS052, WKS057" # Specify the computers that should be joined to the domain. $creds = New-Object System.Management.Automation.PSCredential($usr$pw) Add-Computer -ComputerName $pc -LocalCredential $pc\admin -DomainName $dc -Credential $creds -Restart -Force
Und so verwenden Sie eine Textdatei mit der Liste der Computer, die mit der Domäne verbunden werden sollen:
$dc = "ENTERPRISE" $pw = "Password123" | ConvertTo-SecureString -asPlainText -Force $usr = "$dc\T.Simpson" $pc = Get-Content -Path C:\Computers.txt # Specify the path to the computers list. $creds = New-Object System.Management.Automation.PSCredential($usr,$pw) Add-Computer -ComputerName $pc -LocalCredential $pc\admin -DomainName $dc -Credential $creds -Restart -Force
Entfernen eines Computers aus einer Domäne mit PowerShell
Um einen Computer remote aus einer Domäne zu entfernen, verwenden Sie das Cmdlet „Remove-Computer“. In diesem Beispiel entfernen wir einen Computer aus einer Domäne. Hierfür werden keine lokalen Anmeldeinformationen benötigt, sodass wir den Parameter ?LocalCredential überspringen können:
$dc = "ENTERPRISE" $pw = "Password123" | ConvertTo-SecureString -asPlainText -Force $usr = "$dc\T.Simpson" $pc = "R07GF" $creds = New-Object System.Management.Automation.PSCredential($usr,$pw) Remove-Computer -ComputerName $pc -Credential $creds –Verbose –Restart –Force
Um mehrere Computer mithilfe einer Liste in einer TXT-Datei zu entfernen, verwenden Sie das Skript oben zur Verbindung von Computern mit einem Domänen-Controller und verwenden anstelle des Cmdlets „Add-Computer“ das Cmdlet „Remove-Computer“. Beachten Sie jedoch, dass Sie Administratoranmeldeinformationen für die Domäne benötigen, um eine Verbindung aufzuheben.
Erstellen eines Computerobjekts in Active Directory
Zur Erstellung eines Computerobjekts verwenden Sie das Cmdlet „New-ADComputer“. Mit den folgenden Cmdlet-Parametern können Sie beispielsweise ein Computerobjekt namens „WKS932“ mit dem Standardwert für den LDAP-Pfad erstellen:
New-ADComputer –Name “WKS932” –SamAccountName “WKS932”
Erstellen von Computerkonten auf der Grundlage einer CSV-Datei
Wenn Sie eine Liste von Computern in Active Directory importieren möchten, speichern Sie die Liste als CSV-Datei mit der Überschrift „Computer“ und der Liste der Computernamen in der Spalte darunter. Führen Sie das folgende PowerShell-Skript auf Ihrem Domänen-Controller aus, um Computer aus der CSV-Datei hinzuzufügen. Stellen Sie dabei sicher, dass die Variablen Path und File richtig konfiguriert sind:
$File="C:\scripts\Computers.csv" # Specify the import CSV position. $Path="OU=Devices,DC=enterprise,DC=com" # Specify the path to the OU. Import-Csv -Path $File | ForEach-Object { New-ADComputer -Name $_.Computer -Path $Path -Enabled $True}
Entfernen eines Computers aus Active Directory
Um ein Computerkonto aus Active Directory zu entfernen, verwenden Sie das Cmdlet „Remove-ADObject“. Mit dem Parameter -Identity wird bestimmt, welcher Active Directory-Computer entfernt werden soll. Sie können Computer nach ihrem Namen, ihrer GUID, ihrer Sicherheits-ID (SID) oder ihrem Kontonamen im Sicherheitskonto-Manager angeben.
Remove-ADObject -Identity "WKS932"
Sie werden aufgefordert, den Löschvorgang zu bestätigen.
Entfernen von Computerkonten mithilfe einer Liste
Wenn Sie eine Textdatei mit einer Liste alter Computer haben, können Sie mit PowerShell alle Computer gleichzeitig entfernen. Mit dem folgenden Skript werden die Computernamen aus einer TXT-Datei eingelesen und die dazugehörigen Konten mit einer Befehlskette bzw. Pipeline gelöscht:
Get-Content C:\scripts\computersfordeletion.txt | % { Get-ADComputer -Filter { Name -eq $_ } } | Remove-ADObject -Recursive
Entfernen veralteter Computerkonten aus Active Directory mit PowerShell
Veraltete Konten in Active Directory können kompromittiert werden und damit Sicherheitsvorfälle verursachen. Deshalb ist es wichtig, diese Konten im Blick zu behalten. Mit diesem PowerShell-Skript wird Active Directory durchsucht und eine Liste aller Computer angezeigt, auf denen in den letzten 30 Tagen keine Benutzer angemeldet waren. Diesen Standardwert können Sie im Skript ganz einfach ändern. Das Skript entfernt diese Konten außerdem, um Ihre Active Directory-Umgebung zu bereinigen.
$stale = (Get-Date).AddDays(-30) # means 30 days since last logon, can be changed to any number. Get-ADComputer -Property Name,lastLogonDate -Filter {lastLogonDate -lt $stale} | FT Name,lastLogonDate Get-ADComputer -Property Name,lastLogonDate -Filter {lastLogonDate -lt $stale} | Remove-ADComputer
In unserem Beispiel gibt es den Computer „FS1“, auf dem seit über 30 Tagen kein Benutzer mehr angemeldet war. Das System fordert Sie auf, den Vorgang zu bestätigen, bevor der Computer aus der Domäne gelöscht wird:
Wenn Sie inaktive Computerkonten nicht löschen, sondern lediglich deaktivieren möchten, verwenden Sie anstelle des Cmdlets „Remove-ADComputer“ das Cmdlet „Set-ADComputer“ mit dem Parameter -Enabled $false und dem dazugehörigen Wert.
Umbenennen eines Computers
Um den Namen eines Computers zu ändern, verwenden Sie das Cmdlet „Rename-Computer“. Beachten Sie bitte, dass der Computer online und mit Active Directory verbunden sein muss.
Rename-Computer –ComputerName "FS1" -NewName "FS2"
Wenn Sie dieses Skript lokal ausführen möchten, sieht es wie folgt aus:
Rename-Computer -NewName "newname" -DomainCredential "Domain\Administrator"
Umbenennen eines Computers und Verbinden mit einer Domäne
Sie können das Skript für die Umbenennung weiter optimieren, indem Sie den Computer mit der Domäne verbinden und gleichzeitig der gewünschten Organisationseinheit zuordnen. Das Skript sollte auf dem Zielsystem ausgeführt werden, nicht auf dem Domänen-Controller.
$NewComputerName = "Server3" # Specify the new computer name. $DC = "contoso.com" # Specify the domain to join. $Path = "OU=TestOU,DC=contoso,DC=com" # Specify the path to the OU where to put the computer account in the domain.
Add-Computer -DomainName $DC -OUPath $Path -NewName $NewComputerName –Restart –Force
Das Skript fordert Sie auf, die Anmeldeinformationen für ein Konto einzugeben, das über die Berechtigung zum Verbinden von Computern mit einer Domäne verfügt. Anschließend wird der Computer umbenannt, neu gestartet und mit der Domäne verbunden.
Deaktivieren eines Active Directory-Computerkontos
Mit dem Cmdlet „Disable-ADAccount“ können Sie Benutzer, Computer und Servicekonten in Active Directory deaktivieren. Wenn Sie den Namen eines Computerkontos angeben, müssen Sie ein Dollarzeichen ($) am Ende des Namens anfügen, da sonst nach dem Ausführen des Skripts eine Fehlermeldung angezeigt wird.
Disable-ADAccount -Identity fs1$
Deaktivieren von Computerkonten mithilfe einer Liste
Mit einer Liste in einer Textdatei können Sie auch mehrere Computerkonten gleichzeitig deaktivieren:
$Pclist = Get-Content C:\scripts\Computer.txt # Specify the path to the computers list. Foreach($pc in $Pclist) { Disable-ADAccount -Identity "$pc" Get-ADComputer -Identity "$pc" | Move-ADObject -TargetPath “OU=Disabled Computers,DC=enterprise,DC=com” }
Zurücksetzen eines Active Directory-Computerkontos
Computerkonten interagieren wie Benutzerkonten über Kennwörter mit Active Directory. Für Computerkonten werden jedoch standardmäßig alle 30 Tage Kennwortänderungen durchgeführt und das Kennwort ist von der Kenntwortrichtlinie der Domäne ausgenommen. Kennwortänderungen werden auf dem Client (Computer) durchgeführt und nicht in Active Directory.
Die Anmeldeinformationen für einen Computer sind dem Benutzer in der Regel nicht bekannt, da sie vom Computer zufällig generiert werden. Sie können jedoch auch Ihr eigenes Kennwort festlegen, wie in dem folgenden PowerShell-Skript gezeigt:
$pc = read-host –Prompt “Input computer name to reset“ # Specify the computer name. $pw = read-host –Prompt “Input random characters for temp password“ –AsSecureString # Specify the password. Get-ADComputer $pc | Set-ADAccountPassword –NewPassword:$pw -Reset:$true
Zusammenfassung
Sie wissen nun, wie Sie Active Directory-Computerkonten mit PowerShell verwalten. Sie können die Skripts in diesem Artikel auch erweitern und an Ihre Zwecke anpassen.
Denken Sie stets daran, alle Änderungen an Computerkonten genauestens zu überwachen, damit Sie unerwünschte Änderungen schnell erkennen und entsprechende Maßnahmen ergreifen können.