Magic Quadrant™ für Privileged Access Management 2025: Netwrix zum vierten Jahr in Folge anerkannt. Laden Sie den Bericht herunter.

Plattform
Ressourcen­zentrumBlog
Wie man Passwörter mit PowerShell erstellt, ändert und testet

Wie man Passwörter mit PowerShell erstellt, ändert und testet

Oct 16, 2018

Automatisierung ist der Schlüssel zur Straffung von Active Directory-Verwaltungsaufgaben. In diesem Artikel zeige ich Ihnen, wie Sie Benutzerpasswörter mit PowerShell-Skripten erstellen, ändern und testen.

Installation des AD PowerShell-Moduls

Bevor Sie PowerShell verwenden können, um Active Directory zu verwalten, müssen Sie das Active Directory PowerShell-Modul installieren. Wenn Sie Windows 10 verwenden, um AD zu verwalten, installieren Sie zuerst die Remote Server Administration Tools (RSAT).

Windows 10 Version 1809

Wenn Sie Windows 10 Version 1809 verwenden, ist RSAT als Feature On Demand enthalten, sodass Sie das RSAT-Paket nicht herunterladen müssen. Um RSAT in Windows 10 Version 1809 zu aktivieren, führen Sie den folgenden Befehl in einer PowerShell-Konsole mit erhöhten Rechten aus:

      Add-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
      

Frühere Versionen von Windows 10

Wenn Sie eine frühere Version von Windows 10 verwenden, laden Sie das entsprechende RSAT-Paket von der Microsoft’s website herunter:

  • Wenn Sie Windows Server Version 1803 oder 1709 verwalten, laden Sie das WS_1803-Paket herunter und installieren Sie es.
  • Wenn Sie Windows Server 2016 oder frühere Versionen von Windows Server verwalten, laden Sie das WS2016-Paket herunter und installieren Sie es.

Sobald RSAT installiert ist, starten Sie die PowerShell-Konsole als lokaler Administrator und aktivieren Sie das AD PowerShell-Modul mit diesem PowerShell-Befehl:

      Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
      

Erstellen Sie Anmeldeinformationen mit Passwort mithilfe von PowerShell

Um ein neues Benutzerkonto zu erstellen, verwenden Sie das Cmdlet New-ADUser. Im folgenden Beispiel habe ich die Domain ad.contoso.com in der $UPN Variablen fest codiert. Sie sollten dies ändern, um den UPN-Suffix anzupassen, den Sie den Benutzern zuweisen möchten.

Geben Sie den Vornamen und Nachnamen des Benutzers an. Der UPN und SamAccountName werden anschließend erstellt, indem ein Punkt zwischen Vor- und Nachnamen gesetzt wird. Verwenden Sie das folgende PowerShell-Skript:

      $GivenName = (Read-Host -Prompt "First Name")
$Surname = (Read-Host -Prompt "Last Name")
$User = $GivenName+"."+$Surname
$UPN = $User+"@ad.contoso.com"
$Password = (Read-Host -Prompt "Password" -AsSecureString)
New-ADUser -Name $User -SamAccountName $User -UserPrincipalName $UPN -AccountPassword $Password -GivenName $GivenName -Surname $Surname -Enabled $True
      

Erstellen Sie ein neues AD-Benutzerpasswort mit PowerShell

Der folgende Code fordert Sie auf, einen Benutzernamen und ein Passwort anzugeben. Sie müssen einen Benutzernamen eingeben, der bereits in AD existiert, und ein Passwort, das den Passwortkomplexitätsanforderungen der Domäne entspricht.

      $User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
      

Passwort mit PowerShell ändern

  • Ändern Sie das Passwort eines lokalen Benutzers

Um das Passwort eines lokalen Benutzers zu ändern, müssen Sie die Cmdlets Get-LocalUser und Set-LocalUser verwenden:

      $Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
      
  • Ändern Sie das Passwort eines AD-Benutzers

Um ein neues AD-Benutzerpasswort mit PowerShell zu erstellen, verwenden Sie das folgende Skript. Sie werden aufgefordert, den Benutzernamen eines vorhandenen AD-Kontos anzugeben und dann ein neues Passwort festzulegen, das den Passwortkomplexitätsanforderungen der Domäne entsprechen muss.

      $User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
      
  • Zwingen Sie einen Benutzer dazu, sein Passwort beim nächsten Anmelden zu ändern

Das Set-LocalUser-Cmdlet unterstützt nicht das Einstellen eines lokalen Benutzerkontos, um bei der nächsten Anmeldung eine Passwortänderung zu erzwingen. Sie können jedoch dasselbe Ziel erreichen, indem Sie das Passwort ablaufen lassen:

      $User = (Read-Host -Prompt "Username")
$Usrstring = "WinNT://localhost/"+$User  
$usr=[ADSI] $Usrstring  
$usr.passwordExpired = 1  
$usr.setinfo()
      

Aber Sie können Benutzer dazu zwingen, ihre AD-Kontopasswörter mit Set-ADAccountPassword zu ändern:

      $User = (Read-Host -Prompt "Username")
Set-Aduser -Identity $User -ChangePasswordAtLogon $true
      
  • Ändern Sie ein Administratorpasswort

Um das AD-Administratorpasswort zu ändern, geben Sie administrator ein, wenn Sie bei Verwendung des folgenden Codes nach einem Benutzernamen gefragt werden:

      $User = (Read-Host -Prompt "Username")
$NewPassword = (Read-Host -Prompt "New Password" -AsSecureString)
Set-ADAccountPassword -Identity $User -NewPassword $NewPassword -Reset
      

Um das Passwort eines lokalen Administrators zu ändern, geben Sie administrator ein, wenn Sie nach einem Benutzernamen gefragt werden:

      $Password = (Read-Host -Prompt "New Password" -AsSecureString)
$User = (Read-Host -Prompt "Username")
$UserAccount = Get-LocalUser -Name $User
$UserAccount | Set-LocalUser -Password $Password
      
  • Ändern Sie das Attribut „password never expires“

Um das Attribut „password never expires“ für ein lokales Benutzerkonto zu setzen, verwenden Sie Set-LocalUser:

      $User = (Read-Host -Prompt "Username")
Set-LocalUser -Name $User -PasswordNeverExpires $true
      

Um das Attribut „Passwort läuft nie ab“ für ein Active Directory-Benutzerkonto festzulegen, verwenden Sie Set-ADUser:

      $User = (Read-Host -Prompt "Username")
Set-ADUser -Identity $User -PasswordNeverExpires $true
      
  • Ändern Sie das Passwort des Dienstkontos

Um die Anmeldeeigenschaften eines Dienstes zu ändern, verwenden Sie die Cmdlets Get-Credential und Set-Service. Der folgende Code ändert den AppReadiness-Dienst von der Verwendung des Lokalen Systemkontos zur Verwendung des Benutzernamens und Passworts, die eingegeben werden, wenn dazu aufgefordert wird. Beachten Sie, dass der Set-Service -Credential Parameter nur in PowerShell 6 und später unterstützt wird.

      $credential = Get-Credential
Set-Service -Name "AppReadiness" -Credential $credential
      
  • Ändern Sie das Ablaufdatum eines Passworts in Active Directory

Wenn Sie die Zeit verlängern müssen, die ein Benutzer sein aktuelles Passwort behalten kann, setzen Sie das Attribut pwsLastSet auf das aktuelle Datum, um ihnen zusätzliche Zeit zu geben, bis Active Directory sie zwingt, ihr Passwort zu ändern. Wenn Sie das Attribut löschen und dann auf -1 setzen, wird es auf das aktuelle Datum und die aktuelle Uhrzeit gesetzt.

      $Username = (Read-Host -Prompt "Username")
$User = Get-ADUser $Username -Properties pwdlastset
$User.pwdlastset = 0
Set-ADUser -Instance $User
$User.pwdlastset = -1
Set-ADUser -Instance $User
      
  • Massen-Passwortzurücksetzung

Der beste Weg, um Benutzer dazu zu bringen, ihre AD-Passwörter zu ändern, besteht darin, ein Passwort-Reset zu erzwingen. Dies können Sie in großen Mengen tun, indem Sie die Cmdlets Get-ADUser und Set-ADUser kombinieren. Der untenstehende Befehl verwendet einen Filter, um Benutzer in der Organizational Unit (OU) „Accounts“ zu erhalten und leitet die Ergebnisse an das Cmdlet Set-ADUser weiter, um alle Benutzer in der OU zu zwingen, ihr Passwort beim nächsten Anmelden zu ändern.

      Get-ADUser -Filter * -SearchScope Subtree -SearchBase "OU=Accounts,DC=ad,DC=contoso,DC=com" | 
Set-ADUser -ChangePasswordAtLogon $true
      

Testen der Anmeldeinformationen eines Benutzers

Wenn Sie testen möchten, ob die Anmeldeinformationen eines Benutzers funktionieren, müssen Sie lediglich einen Prozess mit dessen Benutzernamen und Passwort starten. Der untenstehende Code startet cmd.exe unter Verwendung der Anmeldeinformationen, die eingegeben wurden, als danach gefragt wurde.

      Start-Process -FilePath cmd.exe /c -Credential (Get-Credential)
      

Teilen auf

Erfahren Sie mehr

Über den Autor

Asset Not Found

Russell Smith

IT-Berater

IT-Berater und Autor, der sich auf Management- und Sicherheitstechnologien spezialisiert hat. Russell verfügt über mehr als 15 Jahre Erfahrung in der IT, er hat ein Buch über Windows-Sicherheit geschrieben und er hat einen Text für die Official Academic Course (MOAC) Serie von Microsoft mitverfasst.