Microsoft Hyper-V Server Passwortablauf aussetzen also PasswordNeverExpires setzen


Wer einen Standalone Microsoft Hyper-V Server laufen hat, der wird von Zeit zu Zeit sich auf dem Server aufschalten wollen um zu schauen wie die Lage so ist, oder man möchte eine neue VM einrichten und stellt dann auf einmal fest, dass kein Zugang mehr zum Server über die MMC möglich ist.

Was ist in so einem Fall passiert? Ganz einfach, dass Passwort ist abgelaufen und schon klappts nicht mehr mit der Kommunikation. In der Grundkonfiguration ist immer alle sechs Wochen Schluss!

Was hilft? Natürlich Powershell. Also zuerst Powershell installieren: https://newyear2006.wordpress.com/2011/04/15/powershell-beim-microsoft-hyper-v-server-installieren/ 

Dieser Artikel beschreibt, wie man mittels Powershell auf die lokalen Gruppen und Benutzer zugreifen kann, nämlich mittels WinNT-Management Provider. http://blogs.technet.com/b/heyscriptingguy/archive/2008/03/11/how-can-i-use-windows-powershell-to-add-a-domain-user-to-a-local-group.aspx, weitere Infos gibt es hier: http://msdn.microsoft.com/en-us/library/windows/desktop/aa772237(v=vs.85).aspx

Der Aufruf

$user = [adsi]"WinNT://./Benutzername"

sorgt für die Initialisierung eines Objekts vom lokalen Rechner (.) des angegebenen Benutzers.

Gibt man nun

$user

ein, wird nicht viel angezeigt:

distinguishedName :
Path              : WinNT://./Benutzername

Wenn man aber

$user | fl *

verwendet, wird es interessant:

UserFlags                  : {513}
MaxStorage                 : {-1}
PasswordAge                : {322374}
PasswordExpired            : {0}
LoginHours                 : {255 255 255 255 255 255 255 255 255 255 255 255 2
                             55 255 255 255 255 255 255 255 255}
FullName                   : {}
Description                : {}
BadPasswordAttempts        : {0}
LastLogin                  : {09.03.2012 15:13:47}
HomeDirectory              : {}
LoginScript                : {}
Profile                    : {}
HomeDirDrive               : {}
Parameters                 : {}
PrimaryGroupID             : {513}
Name                       : {Benutzername}
MinPasswordLength          : {0}
MaxPasswordAge             : {3628800}
MinPasswordAge             : {0}
PasswordHistoryLength      : {0}
AutoUnlockInterval         : {1800}
LockoutObservationInterval : {1800}
MaxBadPasswordsAllowed     : {0}
objectSid                  : {1 5 0 0 0 0 0 5 21 …}
AuthenticationType         : Secure
Children                   : {}
Guid                      : {xxx}
ObjectSecurity             :
NativeGuid                 : {xxx}
NativeObject               : System.__ComObject
Parent                     : WinNT://WORKGROUP/.
Password                   :
Path                       : WinNT://./Benutzername
Properties                 : {UserFlags, MaxStorage,
PasswordAge, PasswordExpired…}
SchemaClassName            : User
SchemaEntry                : System.DirectoryServices.DirectoryEntry
UsePropertyCache           : True
Username                   :
Options                    :
Site                       :
Container                  :

Interessant sind davon die UserFlags, welche als Custom User Properties laufen: http://msdn.microsoft.com/en-us/library/windows/desktop/aa746535(v=vs.85).aspx. Den UserFlags können Werte aus einer Auflistung ADS_USER_FLAG_ENUM zugewiesen werden, welche hier beschrieben wird: http://msdn.microsoft.com/en-us/library/windows/desktop/aa772300(v=vs.85).aspx. Dort gibt es nun auch den Eintrag:

ADS_UF_DONT_EXPIRE_PASSWD    = 65536,     // 0x10000

welcher diese Umschreibung hat:

ADS_UF_DONT_EXPIRE_PASSWD

When set, the password will not expire on this account.

Also lange Rede, kurzer Sinn, man gibt

$user.UserFlags.value = $user.UserFlags.value –bor 0x10000

ein und schon ist es vorbei. OK, nicht ganz, denn man muss die Änderung noch abspeichern:

$user.CommitChanges()

Aber das wars jetzt.

Überprüfen lässt es sich ganz einfach durch ein kurzes

net user  <Benutzername>

welches zuvor so aussah

Konto aktiv                         Ja

Konto abgelaufen                    Nie

Letztes Setzen des Kennworts       05.03.2012 22:36:58

Kennwort läuft ab                  16.04.2012 22:36:58

Kennwort änderbar                  05.03.2012 22:36:58

Kennwort erforderlich               Ja

Benutzer kann Kennwort ändern       Ja

und danach

Konto aktiv                         Ja

Konto abgelaufen                    Nie

Letztes Setzen des Kennworts       05.03.2012 22:36:58

Kennwort läuft ab                   Nie

Kennwort änderbar                  05.03.2012 22:36:58

Kennwort erforderlich               Ja

Benutzer kann Kennwort ändern       Ja

Wer diese Funktion auf einem anderen Windows Server, der in einer Domäne läuft, ausführen möchte, wird an diesen Scripts gefallen finden: http://richardspowershellblog.wordpress.com/2012/02/08/setting-password-to-never-expire/

Und für alle alten VBler: http://msdn.microsoft.com/en-us/library/windows/desktop/aa746537(v=vs.85).aspx die Variante in VB.

4 Antworten to “Microsoft Hyper-V Server Passwortablauf aussetzen also PasswordNeverExpires setzen”

  1. Heiko H. Says:

    Hallo,
    ein sehr hilfreicher Artikel VIELEN DANK!!!

    Könntest Du bitte:
    „Überprüfen lässt es sich ganz einfach durch ein kurzes

    net use“

    in

    net user „Benutzername“

    ändern? Ich fall jetzt auch schon zum 2. Mal drauf rein… 😉

    Danke.

  2. Quirel Says:

    Wichtig: Wenn man die Aktion auf den aktuell angemeldeten Benutzer anwendet, funktioniert es nicht. Das Speichern zeigt keine Wirkung! Mann braucht also einen zweiten Admin-Account über den man dann den ersten Account verändern kann.

  3. Patrick Says:

    Ein einfaches „net accounts /MAXPWAGE:UNLIMITED“ in cmd tut es auch, oder lieg ich da falsch?

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: