azubaer
Goto Top

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:

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

Content-Key: 143587

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

Printed on: April 18, 2024 at 13:04 o'clock

Member: bastla
bastla May 26, 2010 at 16:10:56 (UTC)
Goto Top
Hallo azubaer!

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
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 "On Error Resume Next" kontraproduktiv - Du willst ja sehen, wo es Fehler gibt ...
Member: azubaer
azubaer May 26, 2010 at 19:25:32 (UTC)
Goto Top
Hallo bastla,

vielen Dank für deinen Beitrag!
das war die Lösung!
Ich weiß nicht wieso, aber es geht (wenn ich es únter Windows 7 aus einer Admin-Konsole heraus anstarte)
face-wink

Besten Dank!
Member: bastla
bastla May 26, 2010 at 19:56:07 (UTC)
Goto Top
Hallo azubaer!
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 ... face-wink

Grüße
bastla

P.S.: Nicht minder zu empfehlen: (ein Teil der) gesammelten Werke der "Scripting Guys" ...