artaios
Goto Top

AD Passwortänderung mittels csv Import

Hallo liebe Forenmitglieder,
ich benötige mal wieder Eure Hilfe bei einem PowerShell Problem. face-smile
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. face-crying
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
}
leider liefert mir das die folgende Fehlermeldung zurück:
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. face-surprise

Gruß
Artaios

Content-ID: 7203801957

Url: https://administrator.de/contentid/7203801957

Ausgedruckt am: 23.11.2024 um 15:11 Uhr

StefanKittel
StefanKittel 18.05.2023 um 12:11:37 Uhr
Goto Top
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
Artaios
Artaios 18.05.2023 um 12:45:39 Uhr
Goto Top
Hallo Stefan,
danke für deine Rückmeldung. Nach deinen Worten kann ich das also vergessen und darf das Ganze einzeln abarbeiten face-sad
Sollte doch noch jemand einen Weg wissen, wie man das ev. eleganter lösen kann, ich bin für sämtliche Schandtaten bereit face-wink
Zitat von @StefanKittel:
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.
Die Geschäftsführung hat es angeordnet, ergo muss sich auch die damit auseinandersetzen. Die Entscheidung liegt mindestens 4 Gehaltsstufen über meiner. Ich bin hier nur das "Werkzeug", aber danke für den Hinweis.

Gruß
Artaios
7010350221
7010350221 18.05.2023 aktualisiert um 13:03:23 Uhr
Goto Top
Richtige Variable verwenden ....
$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.
Artaios
Artaios 18.05.2023 aktualisiert um 13:45:50 Uhr
Goto Top
Hallo Ultramatic,
ich hab das mal so abgeändert, glaub aber, dass ich dich nicht richtig verstanden habe, denn jetzt bekomme ich eine gänzlich andere Fehlermeldung face-sad
Hier die Änderung:
# 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
    $newPassword= ConvertTo-SecureString $newPassword -AsPlainText -Force
    # setze neues Passwort und verhindere eingeständige Änderung
    Set-ADAccountPassword -NewPassword $newPassword -Reset $userUPN -Password $newPassword 
    Set-ADUser $userUPN -CannotChangePassword $true -PasswordNeverExpires $true
}
die Fehlermerldung dazu ist folgende:
Set-ADAccountPassword : Es wurde kein Parameter gefunden, der dem Parameternamen "Password" entspricht.  
In C:\test\Passwortänderung CSV.ps1:10 Zeichen:69
+ ... tPassword -NewPassword $newPassword -Reset $userUPN -Password $newPas ...
+                                                         ~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-ADAccountPassword], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.SetADAccountPassword
 
Set-ADUser : Unter "DC=contoso,DC=local" kann kein Objekt mit der ID "XXXX@XXXXXXX.info" gefunden werden.  
In C:\test\Passwortänderung CSV.ps1:11 Zeichen:5
+     Set-ADUser $userUPN -CannotChangePassword $true -PasswordNeverExp ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (matthias.binner@bpr-consult.info:ADUser) [Set-ADUser], ADIdentityNotFoundExce 
   ption
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microso 
   ft.ActiveDirectory.Management.Commands.SetADUser
 
Zitat von @7010350221:

Richtige Variable verwenden ....
$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.
Genau das will der Geschäftsführer ja nicht, sonst wäre das alles nicht so tragisch face-sad
Gruß
Artaios
lcer00
lcer00 18.05.2023 um 14:48:31 Uhr
Goto Top
Hallo,

eine falsche Entscheidung bleibt eine falsche Entscheidung, auch wenn die Geschäftsführung sie trifft. Ich würde die Geschäftsführung fragen, was sie wirklich erreichen will. Und dann kann man sicher eine praktikable und saubere Lösung finden.

Grüße

lcer
7010350221
Lösung 7010350221 18.05.2023 aktualisiert um 15:01:28 Uhr
Goto Top
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
RTFM man !!
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.
Artaios
Artaios 19.05.2023 um 09:15:46 Uhr
Goto Top
*ARGH* Tomaten auf den Augen gehabt face-sad Natürlich das komplett verkehrte ausgetauscht. Sorry, hab die Variable vor lauter Variablen nicht mehr gesehen. Das ist zugegebenermaßen erst der zweite Versuch mich mit PowerShell auseinanderzusetzen und so richtig hab’ ich das alles noch nicht in meinem Schädel drinnenface-surprise
Zitat von @7010350221:
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.
Das Schreiben dazu ist bereits fertig. Mir ist schon klar, dass es Datenschutztechnisch und auch arbeitsrechtlich mehr als bedenklich ist. Nur ist es eben so, dass derjenige, der zahlt, auch die Musik bestimmt.
O-Ton:
Das sind meine Rechner, also will ich da auch die Kontrolle darüber haben.
Wie zuvor erwähnt, darauf hingewiesen, habe ich ihn mehrmals, auch mit ev. Konsequenzen, aber er bleibt dabei. Deshalb wurde auch ein entsprechendes Schreiben aufgesetzt, worin nochmals darauf hingewiesen wird und zur Unterschrift ist es bereits vorgelegt.

Danke noch einmal für eure Hilfestellung.
Gruß
Artaios