VB-Script das mit WMI lokale User zur Passwortänderung zwingen soll funktioniert nicht! (Windows 7)
Hallo,
ich versuche mir ein Script für Windows 7 zu basteln, welches bei allen aktiven, lokalen Systembenutzern (die nicht "Systemadministrator" heißen) eine Passwortänderung beim nächsten Login erzwingt.
Folgendes VB-Script habe ich bereits hinbekommen:
Leider funktioniert es noch nicht - zumindest nicht unter Windows 7 (andere Systeme habe ich nicht probiert - nützten mir auvh nix).
Das Wscript.Echo gibt zwar den korrekten Benutzernamen zurück, aber die Änderungen werden nicht übernommen.
Ist möglicherweise der Put-Parameter für eine Passwortänderung falsch?
Oder gibt es eine Besonderheit bei Windows 7 (das Script stammt noch aus XP-Zeiten...)
Kennt jemand eine Möglichkeit wie es unter Windows 7 klappen würde?
Schonmal besten Dank für eure Hilfe!
Gruß
Martin
ich versuche mir ein Script für Windows 7 zu basteln, welches bei allen aktiven, lokalen Systembenutzern (die nicht "Systemadministrator" heißen) eine Passwortänderung beim nächsten Login erzwingt.
Folgendes VB-Script habe ich bereits hinbekommen:
On Error Resume NextstrComputer = "localhost"Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _ ("Select * from Win32_UserAccount Where LocalAccount = True AND Disabled = False AND Name <> 'Systemadministrator'")For Each objItem in colItems objItem.Put "PasswordExpired", 1 objItem.SetInfo Wscript.Echo objItem.NameNext
Leider funktioniert es noch nicht - zumindest nicht unter Windows 7 (andere Systeme habe ich nicht probiert - nützten mir auvh nix).
Das Wscript.Echo gibt zwar den korrekten Benutzernamen zurück, aber die Änderungen werden nicht übernommen.
Ist möglicherweise der Put-Parameter für eine Passwortänderung falsch?
Oder gibt es eine Besonderheit bei Windows 7 (das Script stammt noch aus XP-Zeiten...)
Kennt jemand eine Möglichkeit wie es unter Windows 7 klappen würde?
Schonmal besten Dank für eure Hilfe!
Gruß
Martin
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 143587
Url: https://administrator.de/contentid/143587
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo azubaer!
So sollte das eher funktionieren:
Damit sollte auch eine allfällige Einstellung "Kennwort läuft nie ab" rückgängig gemacht werden (da ansonsten das "PasswordExpired" keinen Sinn hätte).
Grüße
bastla
P.S.: Während des Testens eines VBScripts ist "
So sollte das eher funktionieren:
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
Set colAccounts = GetObject("WinNT://.")
colAccounts.Filter = Array("user")
For Each objUser In colAccounts
If LCase(objUser.Name) <> LCase("Systemadministrator") And objUser.AccountDisabled = False Then
objUserFlags = objUser.Get("UserFlags")
objPasswordExpirationFlag = objUserFlags And Not ADS_UF_DONT_EXPIRE_PASSWD
objUser.Put "userFlags", objPasswordExpirationFlag
objUser.Put "PasswordExpired", 1
objUSer.SetInfo
End If
Next
Grüße
bastla
P.S.: Während des Testens eines VBScripts ist "
On Error Resume Next
" kontraproduktiv - Du willst ja sehen, wo es Fehler gibt ...
Hallo azubaer!
Grüße
bastla
P.S.: Nicht minder zu empfehlen: (ein Teil der) gesammelten Werke der "Scripting Guys" ...
Ich weiß nicht wieso, aber es geht
Stammt doch zum größten Teil direkt von MS (aus der sehr zu empfehlenden Sammlung von Beispielscripts in der "script_center.chm") - da darf es doch eigentlich ... Grüße
bastla
P.S.: Nicht minder zu empfehlen: (ein Teil der) gesammelten Werke der "Scripting Guys" ...