AD Passwortänderung mittels csv Import
Hallo liebe Forenmitglieder,
ich benötige mal wieder Eure Hilfe bei einem PowerShell Problem.
Ich bekam die Aufgabe aufs Auge gedrückt, dass bei allen Usern (ca. 350) die Passwörter geändert werden müssen, gleichzeitig muss unterbunden werden, dass die Passwörter eigenständig geändert werden können und auch nicht ablaufen. Die Passwörter selbst werden anhand einer CSV-Datei durch die Geschäftsleitung bereitgestellt. Liegt auf der Hand, dass dies am besten mittels PowerShell Script erledigt wird. Also habe ich mir da etwas zusammengebastelt, was allerdings nicht so wirklich funktioniert.
Derzeit sieht mein Script so aus:
leider liefert mir das die folgende Fehlermeldung zurück:
Ich fände es echt super, wenn mir jemand sagen könnte, wo ich den Fehler hab und wie ich das ändern kann.
Gruß
Artaios
ich benötige mal wieder Eure Hilfe bei einem PowerShell Problem.
Ich bekam die Aufgabe aufs Auge gedrückt, dass bei allen Usern (ca. 350) die Passwörter geändert werden müssen, gleichzeitig muss unterbunden werden, dass die Passwörter eigenständig geändert werden können und auch nicht ablaufen. Die Passwörter selbst werden anhand einer CSV-Datei durch die Geschäftsleitung bereitgestellt. Liegt auf der Hand, dass dies am besten mittels PowerShell Script erledigt wird. Also habe ich mir da etwas zusammengebastelt, was allerdings nicht so wirklich funktioniert.
Derzeit sieht mein Script so aus:
# CSV Datei wird eingelesen
$users = Import-Csv -Delimiter ";" -Encoding UTF8 -Path C:\test\user_München-Objektplanung.csv
#führe für jeden User aus..
foreach($user in $users){
#Variablen Deffinition
$userUPN= $user.UserPrincipalName
$newPassword= $user.Password
$secPassword = ConvertTo-SecureString $newPassword -AsPlainText -Force
# setze neues Passwort und verhindere eingeständige Änderung
Set-ADAccountPassword -NewPassword $newPassword -Reset $userUPN -Password $secPassword Set-ADUser -CannotChangePassword $true -PasswordNeverExpires $true
}
Set-ADAccountPassword : Der Parameter "NewPassword" kann nicht gebunden werden. Der Wert "Wecxh789!23" vom Typ
"System.String" kann nicht in den Typ "System.Security.SecureString" konvertiert werden.
In C:\test\Passwortänderung CSV.ps1:10 Zeichen:40
+ Set-ADAccountPassword -NewPassword $newPassword -Reset $userUPN - ...
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-ADAccountPassword], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.SetADAccountPassw
ord
Ich fände es echt super, wenn mir jemand sagen könnte, wo ich den Fehler hab und wie ich das ändern kann.
Gruß
Artaios
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7203801957
Url: https://administrator.de/contentid/7203801957
Ausgedruckt am: 23.11.2024 um 15:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
schau mal hier
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
Der Import akzeptiert eine Klartextkennwörter.
Grundsätzlich ist dies Verfahren sehr bedenklich.
Sowohl von der Sicherheit, dem Datenschutz und Arbeitnehmerrecht.
Habt Ihr einen Betriebsrat der das abgesegnet hat?
Und wofür? Der Admin kann jedes Kennwort doch überschreiben wenn Jemand dringend an etwas ranmuss.
Stefan
schau mal hier
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell ...
Der Import akzeptiert eine Klartextkennwörter.
Grundsätzlich ist dies Verfahren sehr bedenklich.
Sowohl von der Sicherheit, dem Datenschutz und Arbeitnehmerrecht.
Habt Ihr einen Betriebsrat der das abgesegnet hat?
Und wofür? Der Admin kann jedes Kennwort doch überschreiben wenn Jemand dringend an etwas ranmuss.
Stefan
Richtige Variable verwenden ....
$secPassword vs. $newPassword
Und das Set-ADUser nicht einfach so hinter Set-ADAccountPassword pappen das sind zwei separate Befehle ...
$secPassword vs. $newPassword
Und das Set-ADUser nicht einfach so hinter Set-ADAccountPassword pappen das sind zwei separate Befehle ...
Die Passwörter selbst werden anhand einer CSV-Datei durch die Geschäftsleitung bereitgestellt
Autsch... Die sollte man besser gleich random im Skript generieren in Liste ausgeben und nur den Usern mitteilen, und dann die User beim Erstlogin zwingend ihr eigenes Passwort vergeben lassen per -ChangePasswordAtLogon $true.Set-ADAccountPassword -NewPassword $newPassword
Tja du hast die Variable immer noch nicht getauscht (wozu erstellt du ein Secure-String wenn du ihn nicht nutzt 🙃) und noch mehr Fehler eingebaut ....Set-ADAccountPassword $userUPN -NewPassword $secPassword -Reset
Set-ADUser $userUPN -CannotChangePassword $true -PasswordNeverExpires $true
https://learn.microsoft.com/en-us/powershell/module/activedirectory/set- ...
Genau das will der Geschäftsführer ja nicht, sonst wäre das alles nicht so tragisch face-sad
Du als IT-Mensch sollte diesen aber auf solche groben Schnitzer zumindest hinweisen und ihn das unterschreiben lassen, nicht das dir das später angelastet wird wenn es mal ein Datenschutz-Auditing geben sollte.