Wann ist eine Kennwortänderung für ein Domänencomputerkonto geplant?

Wann ist eine Kennwortänderung für ein Domänencomputerkonto geplant?

Ich verstehe, dass einer Domäne angehörende Computer über Maschinenkonten in AD verfügen und dass die Kennwörter dieser Konten ablaufen (standardmäßig offenbar alle 30 Tage) und dass diese Kennwörter automatisch und ohne Benutzereingriff geändert werden.

Da dies bekanntermaßen Probleme beim Wiederherstellen von Snapshots von virtuellen Maschinen verursacht, die einer Domäne angehören, ist es möglich, den Computer oder AD, der einer Domäne angehören, abzufragen, um zu ermitteln, wann die nächste Änderung des Kennworts des Maschinenkontos ansteht?

Antwort1

Es ist möglich, hierfür die Domäne abzufragen. Das folgende Skript teilt Ihnen mit, wann das Domänenkennwort eines bestimmten Computers zuletzt zurückgesetzt wurde.

'Replace "yourdom.com" with your domain name.
DomainName = "yourdom.com"

querymachine = UCase(inputbox("Enter full machine name"))
lngBias = 2

'****************Setup Log file******************************************************

Set fso = CreateObject("Scripting.FileSystemObject")
'The 8 in this line will append to an existing file, replace with a 2 to override
set txtStream = fso.OpenTextFile("System.txt", 8, True)
txtStream.WriteLine "Ran on " & Date & " *******************************"

'****************Setup ADSI connection and populate ADSI Collection******************

Set objADOconnADSI = CreateObject("ADODB.Connection")
objADOconnADSI.Open "Provider=ADsDSOObject;"
Set objCommandADSI = CreateObject("ADODB.Command")
objCommandADSI.ActiveConnection = objADOconnADSI
'there is a 1000 object default if these next 2 lines are omited.
objCommandADSI.Properties("Size Limit")= 100000
objCommandADSI.Properties("Page Size")= 100000
objCommandADSI.Properties("Sort on") = "sAMAccountName"
objCommandADSI.CommandText = "<LDAP://" & DomainName & ">;(objectClass=computer);sAMAccountName,pwdLastSet,name,distinguishedname,operatingSystem;subtree"
Set objRSADSI = objCommandADSI.Execute

'Loop through record set and compare machine name*************************************

do while NOT objRSADSI.EOF
    if not isnull(objRSADSI.Fields("distinguishedname")) and objRSADSI.Fields("distinguishedname") <> "" then
    objDate = objRSADSI.Fields("PwdLastSet")
    'Go to function to make sense of the PwdLastSet value from AD for the machine account.
    dtmPwdLastSet = Integer8Date(objDate, lngBias)
    'calculate the current age of the password.
    DiffADate = DateDiff("d", dtmPwdLastSet, Now)

    'Is the machine the one we're looking for?
        if UCase(objRSADSI.Fields("name")) = querymachine then
        txtStream.WriteLine objRSADSI.Fields("name") & ";" & dtmPwdLastSet & ";" & DiffADate & ";" & objRSADSI.Fields("operatingSystem") 
        wscript.echo objRSADSI.Fields("name") & ", Last set: " & dtmPwdLastSet & ", Days since last change: " & DiffADate
        end if
    end if
objRSADSI.MoveNext
loop
wscript.echo "Done!"



Function Integer8Date(objDate, lngBias)
' Function to convert Integer8 (64-bit) value to a date, adjusted for
' local time zone bias.
Dim lngAdjust, lngDate, lngHigh, lngLow
lngAdjust = lngBias
lngHigh = objDate.HighPart
lngLow = objdate.LowPart
' Account for bug in IADslargeInteger property methods.
If lngLow < 0 Then
lngHigh = lngHigh + 1
End If
If (lngHigh = 0) And (lngLow = 0) Then
lngAdjust = 0
End If
lngDate = #1/1/1601# + (((lngHigh * (2 ^ 32)) _
+ lngLow) / 600000000 - lngAdjust) / 1440
Integer8Date = CDate(lngDate)
End Function 

(Ich würde gerne die Urheberschaft des obigen Skripts angeben, aber es wurde von Person zu Person weitergegeben und auf verschiedene Weise geändert. Ich habe keine Ahnung, woher es ursprünglich stammt.)

Speichern Sie dies als eine Datei wie MachinePasswordDate.vbs. Wenn Sie in Windows auf die Datei doppelklicken, sollte ein Feld angezeigt werden, in das Sie einen Computernamen eingeben können. Das Feld sollte dann die Domäne abfragen und Ihnen mitteilen, wann das Kennwort dieses Computers zuletzt geändert wurde.

Wenn Sie regelmäßig Snapshots virtueller Maschinen wiederherstellen, lohnt es sich möglicherweise, die Sicherheitsrichtlinien dieser Maschinen zu überprüfen, bevor Sie ein Image speichern. Sie können das Intervall zum Zurücksetzen des Maschinenkennworts ganz einfach auf bis zu 999 Tage ändern, vorausgesetzt, Ihre Domänen-GPOs überschreiben es nicht und Ihre Sicherheitsrichtlinie lässt Folgendes zu:

Klicken Sie auf „Start“ und dann auf „Ausführen“, geben Sie „Gpedit.msc“ ein und drücken Sie die EINGABETASTE.

Erweitern Sie „Lokale Computerrichtlinie“, „Computerkonfiguration“, „Windows-Einstellungen“, „Sicherheitseinstellungen“, „Lokale Richtlinien“ und dann „Sicherheitsoptionen“.

Konfigurieren Sie die folgenden Einstellungen:

  • Domänenmitglied: Kennwortänderungen für Computerkonten deaktivieren (Aktiviert)

  • Domänenmitglied: Maximales Passwortalter für Computerkonten (999 Tage)

  • Domänencontroller: Kennwortänderungen für Computerkonten ablehnen (Aktiviert)

Antwort2

Auf dem DC oder jedem Computer mit RSAT können Siedsquery computer -name ComputerName -stalepwd x

ComputerName ist der Name des Computers, den Sie überprüfen möchten.
x ist die Anzahl der Tage seit der letzten Festlegung des Kennworts.

Wenn das Kennwort seit x Tagen nicht mehr festgelegt wurde, werden der Name und die Container des Computers zurückgegeben. Wenn das Kennwort innerhalb der letzten x Tage festgelegt wurde, wird nichts zurückgegeben.

verwandte Informationen