Gruppenrichtlinienscipts - Maximale Wartezeit im Script ermitteln
Hallo zusammen,
da ich ein Herunterfar-Script in VBScript erstellen möchte, das regelmäßig die Festplatte defragmentiert, möchte ich gern vorher prüfen, ob die Maximale Wartezeit für Gruppenrichtlinienscripts deaktiviert wurde (eine Defragmentierung kann ja durchaus mal einige Stunden dauern).
Bisher habe ich mir folgende Funktion zusammen "geschustert":
Die Funktion prüft grob gesagt, ob die entsprechende Einstellung per Gruppenrichtlinie vorgenommen wurde. Falls ja, gibt die Funktion ein positives Ergebnis zurück, falls die Einstellung "0" - also deaktiviert - ist. Falls kein Richtlinieneintrag existiert, wird die lokale Einstellung gegen "0" geprüft...
Mein Problem:
Es scheint, als ob der in der Registry ermittelte Wert nicht unbedingt immer mit dem angewandten Wert übereinstimmt. Ein Beispiel wäre ein Computer, der vor dem Setzen der entsprechenden Richtlinie gestartet wurde und die Einstellung offenbar bisher nicht übernommen hat.
Kennt jemand von euch eine Möglichkeit, bspw. per WMI den AKTUELLEN Wert für die Wartezeit abzufragen ? Ich habe mit dem Scriptomatic schon einige WMI-Klassen durch, aber bisher keinen entsprechenden Wert finden können...
Viele Grüße,
Eicky
da ich ein Herunterfar-Script in VBScript erstellen möchte, das regelmäßig die Festplatte defragmentiert, möchte ich gern vorher prüfen, ob die Maximale Wartezeit für Gruppenrichtlinienscripts deaktiviert wurde (eine Defragmentierung kann ja durchaus mal einige Stunden dauern).
Bisher habe ich mir folgende Funktion zusammen "geschustert":
Private Function CheckIfGPScriptWaitIsDisabled
CheckIfGPScriptWaitIsAbsolute = False
Dim objReg, intWaitGPO, intWaitSystem
Set objReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
objReg.GetDWORDValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system", "MaxGPOScriptWait", intWaitGPO
objReg.GetDWORDValue HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "MaxGPOScriptWait", intWaitSystem
Dim boolWaitSystemOK, boolWaitGPOOK, boolGPOSet
boolWaitSystemOK = False
boolWaitGPOOK = False
boolGPOSet = False
If IsNumeric(intWaitSystem) Then
If intWaitSystem = 0 Then
boolWaitSystemOK = True
End If
End If
If IsNumeric(intWaitGPO) Then
boolGPOSet = True
If intWaitGPO = 0 Then
boolWaitGPOOK = True
End If
End If
If (Not boolGPOSet And boolWaitSystemOK) Or boolWaitGPOOK Then
CheckIfGPScriptWaitIsAbsolute = True
End If
Set objReg = Nothing
End Function
Die Funktion prüft grob gesagt, ob die entsprechende Einstellung per Gruppenrichtlinie vorgenommen wurde. Falls ja, gibt die Funktion ein positives Ergebnis zurück, falls die Einstellung "0" - also deaktiviert - ist. Falls kein Richtlinieneintrag existiert, wird die lokale Einstellung gegen "0" geprüft...
Mein Problem:
Es scheint, als ob der in der Registry ermittelte Wert nicht unbedingt immer mit dem angewandten Wert übereinstimmt. Ein Beispiel wäre ein Computer, der vor dem Setzen der entsprechenden Richtlinie gestartet wurde und die Einstellung offenbar bisher nicht übernommen hat.
Kennt jemand von euch eine Möglichkeit, bspw. per WMI den AKTUELLEN Wert für die Wartezeit abzufragen ? Ich habe mit dem Scriptomatic schon einige WMI-Klassen durch, aber bisher keinen entsprechenden Wert finden können...
Viele Grüße,
Eicky
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 106249
Url: https://administrator.de/contentid/106249
Ausgedruckt am: 20.11.2024 um 15:11 Uhr
1 Kommentar