[Batch] GPO überprüfen

clecksi

Ensign
Registriert
Feb. 2009
Beiträge
132
Hi zusammen,

bin gerade dabei ein Script zu schreiben, welches mir eine Group Policy ausliest und mir auf Grund des Ergebnisses bestimmte Einstellungen vornimmt.

Erst finde ich mit dem Code die Zeile, in der meine GPO steht.
Code:
gpresult /r | findstr /n "zu suchende GPO"

Das Ergebnis sollte dann in einer Variable gespeichert werden.

Dieses Ergebnis wird anschließend mit den Überschriften der akzeptierten und nicht akzeptierten GPOs verglichen und dadurch ermittelt, wo die zu suchende GPO steht.


Meine Fragen:
- kann ich das Ergebnis meiner Suche irgendwie in eine Variable übergeben?
- gibt es vielleicht eine andere Möglichkeit, um GPOs mit einem Script zu überprüfen?


EDIT:
Dieses Script sollte auf allen gängigen Windows und Windows Server Versionen funktionieren...
(XP, 7, 8, Server 2008 R2, Server 2012)

mfg
clecksi
 
Zuletzt bearbeitet: (Systeminfo)
gpresult /h c:\temp\gpreport.html ?

So siehste doch ohne Problem wo die Policy steht
 
Ich denke das ist ein klassischer Fall für ein PowerShell Skript.

Damit braucht man nicht in Ausgaben von Programmen rumsuchen oder so. Man arbeitet direkt auf GPO-Objektebene wie im MMC-Snapin auch. Nur eben auf Skriptebene. Hier gibts ein Beispiel wie man sowas schreibt und was man damit machen kann -> http://gallery.technet.microsoft.com/PowerShell-Script-to-eed7188a

Könnte dir das Leben eventuell erleichtern, besonders wenns etwas komplexer wird.
 
Hi,

Danke für die schnellen antworten!

@Schmidij:
Ja, ist eine nette Darstellung...aber die eigentliche Frage ist ja wie ich dieses "sehen" automatisieren kann, damit ichs nicht jedes Mal selber suchen muss ob die GPO akzeptiert wurde oder nicht.

@DocWindows:
Powershell hab ich mir auch schon überlegt, hier ist aber das Problem dass die Skripte unter WinXP ohne extra Installation nicht laufen. (Powershell Download Link)

Bis jetzt hab ich folgendes erreicht:
Code:
@echo off

::GPOs in File ausgeben und nummerieren
gpresult /r | find /v "RSOP" | find " " | findstr /r /n "." > %temp%\gpresult.log

::GPO suchen
find "ExcelMacro" %temp%\gpresult.log >> %temp%\gpresult2.log

::Zeile von GPO in Variable
for /F "delims=:" %%i in (%temp%\gpresult2.log) do set /a exc=%%i+1

::Prüfen ob in Zeile nach GPO Filtering steht
findstr "%exc%:" %temp%\gpresult.log | findstr "Filtering"

:Entscheiden ob GPO akzeptiert
if %errorlevel% EQU 0 echo GPO nicht akzeptiert > %temp%\gpresult2.log
if %errorlevel% EQU 1 echo GPO akzeptiert > %temp%\gpresult2.log

Es ist zwar ein bisschen umständlich mit den 2 temp-files, aber es funktioniert :)

mfg
clecksi
 
Zurück
Oben