Maak Active Directory Groepsbeleidsrapporten met PowerShell. Met behulp van de cmdlet Get-GpoReport
kunnen we rapporten produceren over Groepsbeleid (GPO), variërend van eenvoudige tekstgebaseerde rapporten tot volledig uitgewerkte Hypertext Markup Language (HTML) rapporten. Bovendien kunnen we dit rapportagesproces automatiseren met PowerShell. Dit is om tijd te besparen en belangrijke informatie te verkrijgen over uw Active Directory (AD) systeem. In dit artikel gaan we in op het importeren van het PowerShell GPO-module, het exporteren van GPO’s en het linken van GPO’s aan een Organizational Unit (OU). Dit zal als een voorbeeld dienen, zodat ze allemaal samenwerken om een aantal top-notch rapporten te produceren.
Laten we beginnen met het maken van Active Directory Beleidsrapporten met PowerShell.
Maak AD Group Policy-rapporten (GPO) met PowerShell
Vereisten
In dit artikel zullen we een paar verschillende situaties bespreken die te maken hebben met het maken en wijzigen van bestaande GPO’s. Zorg ervoor dat we de volgende zaken al hebben geïnstalleerd als je de voorbeelden wilt volgen:
- De PowerShell-module voor Group Policy. Als je Windows 10 gebruikt, kun je deze vinden door RSAT te downloaden en te installeren, of als je Windows Server gebruikt, kun je de onderstaande PowerShell-opdracht gebruiken:
Install-WindowsFeature -Name GPMC
- A computer member of the same AD domain from which we will query GPOs.
- Een computer die is aangesloten op het AD-domein met een domeingebruikersaccount met rechten om GPO’s te lezen.
Genereren van HTML-rapporten met Get-GpoReport
Allereerst, laten we ons voorstellen dat we een enkele GPO hebben. Dus, je wilt de instellingen ervan bekijken (en ook een HTML-rapport genereren) om de zaken op gang te krijgen. Gelukkig kan Get-GpoReport
een GPO ontdekken op beide en PowerShell gebruiken om ze te exporteren. Om dat te doen, hebben we ofwel de naam van de GPO nodig of de globaal unieke identificatie (GUID) van de GPO.
Daarom moet je ten minste drie parameters gebruiken om een gedetailleerd HTML-rapport te maken:
- Naam of GUID om de GPO te lokaliseren.
- ReportType-parameter om het type rapport te specificeren dat moet worden gegenereerd. We kunnen kiezen tussen HTML of XML (Extensible Markup Language).
- Pad om aan te geven waar we het rapport willen opslaan.
Misschien hebben we een GPO in je omgeving. Bijvoorbeeld, we kunnen het ReportType
specificeren als een waarde HTML
voor een HTML-rapport en het pad waar je dit HTML-bestand wilt opslaan als we de naam van de GPO weten, zoals in dit voorbeeld.
Get-GPOReport -Name 'Sample GPO' -ReportType 'HTML' -Path 'C:\Temp\SampleReport.html'
Als alternatief kunnen we de Guid
-parameter gebruiken om de GPO te vinden, maar dit is een extra stap met het onderstaande voorbeeld.
$gponame = (Get-GPO -Name 'Sample GPO').Id
Get-GPOReport -Guid $gponame -ReportType 'HTML' -Path 'C:\Temp\SampleReport.html'
Zodra het rapport klaar is, kunt u het bekijken in uw favoriete browser.
HTML-rapporten genereren voor alle GPO’s
Als alternatief kunt u een domeinbreed rapport maken voor GPO’s. In dat geval moeten we de All
-parameter gebruiken om alle GPO’s in het domein op te vragen. Deze keer gebruiken we echter niet de Name
– of Guid
-optie om een specifieke GPO aan te wijzen, maar de All
-schakelparameter om ze allemaal te vinden.
Get-GPOReport -All -ReportType Html -Path "C:\Temp\All-SampleReport.html"
Wanneer dit wordt gebruikt in een AD-omgeving, raadpleegt de Get-GPOReport
-cmdlet een domain controller (DC) die is opgegeven met de Server
-parameter om GPO’s te lezen. Daarna zal standaard de DC met de rol van de PDC Emulator worden gebruikt als er geen server beschikbaar is.
Hierna gaan we verder met het maken van Active Directory beleidsrapporten met PowerShell om XML-rapporten te genereren.
Lees ookOffice 365 gebruikersrapporten
Maken van XML-rapporten met Get-GpoReport
Over het algemeen, zodra we de GPO-module in PowerShell hebben geïmporteerd, zijn er andere dingen die Get-GPOReport
kan doen. Dat betekent, behalve het exporteren van GPO’s en het produceren van HTML-rapporten. Bovendien kunnen we ook XML-rapporten produceren. Als we bijvoorbeeld een XML-rapport voor een specifieke GPO willen maken, moeten we de waarde van de ReportType
parameter wijzigen van HTML
naar XML
.
Bijvoorbeeld, hieronder vragen we een bestaande GPO, Voorbeeldrapport
, aan om een XML-rapport te produceren. Vervolgens openen we dat rapport met behulp van de Invoke-Item
opdracht in de standaardapp van het XML-bestand:
Get-GPOReport -Name 'Sample GPO' -ReportType Xml -Path "C:\temp\SampleReport.xml"
Invoke-Item -Path "C:\Temp\SampleReport.xml"
Wanneer het voltooid is, zullen we het XML-bestand zien zoals op de onderstaande schermafbeelding.
Ten eerst merken we dat het GPO XML-knooppunt alles bevat. Binnenin kunnen we dingen vinden zoals Identifier
(de GPO GUID), Name
(De GPO Naam), Include Comments, Security Descriptor, SDDL
en veel meer informatie.
GPO XML Rapport
Wat onderscheidt dit XML-rapport van HTML, behalve de indeling? In feite zijn de attributen die in het HTML-rapport worden gezien ook aanwezig in het XML-rapport. Maar ze zijn gestructureder en eenvoudiger te parseren.
- VersieDirectory – Versie van de GPO opgeslagen in de AD-database.
- VersionSysvol – Versie van de GPO opgeslagen in SYSVOL.
- Ingeschakeld – Als uitgeschakeld, zal de GPO-verwerkingmotor op de clientcomputer de instellingen in het corresponderende deel van het beleid niet toepassen.
Belangrijk is dat de beleidsversie (computer of gebruiker) toeneemt wanneer we een GPO wijzigen. Daarom kan de Groepsbeleidsverwerkingmotor bepalen wanneer nieuwe instellingen moeten worden toegepast en wanneer een beleid is gewijzigd. Bovendien zal dit gedrag ons in staat stellen om gpupdate.exe na het wijzigen van een GPO te starten zonder de gecombineerde /force-schakelaar te gebruiken.
Lees ook Active Directory Management
Active Directory Group Policy Reports controleren met behulp van InfraSOS
Probeer ons uit voor Gratis, Toegang tot alle functies. – 200+ AD-rapportagetemplates beschikbaar. Maak gemakkelijk uw eigen AD-rapporten aan.
GMPC
We kunnen de GPO-versie (voor AD en SYSVOL) en zijn status in de GPMC bekijken.
Bovendien zal de computer van de klant nog steeds een beleid verwerken, zelfs als VersionDirectory
en VersionSysvol
de waarde 0
hebben, maar Enabled
is true
. Het systeem zal de verwerkingsengine informeren dat we het relevante gedeelte van het GPO niet hoeven te implementeren. Het wijzigen van de configuratie heeft niet veel invloed op de prestaties van een snelle computer op een relatief kort netwerk. Toch kan het nog steeds veel waardevolle seconden besparen, vooral voor oudere machines op langzamere netwerken.
Dus de verwerkingsengine op de clientmachine zal geen beleid toepassen met VersionDirectory
en VersionSysvol
hoger dan 0
, maar Enabled
ingesteld op false
. We kunnen ons afvragen waarom sommige instellingen niet worden toegepast. Het is dus essentieel om te onderzoeken of dit een ongelukje is of met opzet.
Stel dat we bekend zijn met de interne werking van het GPO. In dat geval kunnen we de opdracht Get-GPOReport
gebruiken. Dit is om direct naar deze instellingen te controleren door een eigenschap te refereren in plaats van naar de GPMC te navigeren.
Als alternatief kunnen we ons willen concentreren op een paar instellingen in een GPO. Of uiteindelijk willen we een GPO aan een OU koppelen met behulp van PowerShell, zodat we geen rapport hoeven te maken.
- Verwijder de parameter
Pad
in die situatie. Let op de[xml]
cast en het ontbreken van eenPad
parameter in het onderstaande voorbeeld.
[xml]$GpoXml = Get-GPOReport -Name 'Sample GPO' -ReportType Xml
2. Nu we de uitvoer van Get-GPOReport
hebben omgezet naar een XML-object, kunnen we snel verwijzen naar de vele eigenschappen ervan met behulp van een beknopte punt notatie.
$GpoXml.GPO.Computer
$GpoXml.GPO.User
3. Voeg een foreach
-lus toe en gebruik het argument All
om door elke GPO-uitvoer te gaan.
$AllGpos = Get-GPO -All
$GpoVersionInfo = foreach ($gpo in $gpos) {
[xml]$g = Get-GPOReport -ReportType Xml -Guid $gpo.Id
[PSCustomObject]@{
"Name" = $g.GPO.Name
"Comp-Ad" = $g.GPO.Computer.VersionDirectory
}
}
$GpoVersionInfo | Sort-Object Name | Format-Table
Ook lezen Active Directory-rapportagetool
XML GPO-rapporten parseren
We kunnen veel aspecten van uw GPO’s leren kennen met behulp van de XML-uitvoer die Get-GPOReport
produceert. In het vorige voorbeeld, als we kijken naar de eigenschappen $GPOXML.GPO.Computer
en $GPOXML.GPO.User
van het vorige model, zien we een eigenschap ExtensionData
zoals hieronder weergegeven.
Zoals hieronder getoond, kunnen we op basis van de XML-gegevens rapporten maken met behulp van deze XML-knooppunten in PowerShell.
$PolicyDetails = foreach ($policy in $GpoXml.GPO.User.ExtensionData.Extension.Policy) {
[PSCustomObject]@{
"Name" = $policy.Name
"State" = $policy.State
}
}
$PolicyDetails
Bedankt voor het lezen van onze artikelblog over hoe u Active Directory-beleidsrapporten kunt maken met PowerShell. Laten we afronden.
Maak Active Directory Group Policy-rapporten met behulp van PowerShell Conclusie
Naast de native Group Policy Management Console (GPMC) werden in dit artikel manieren besproken om uitgebreide rapporten te genereren over Group Policies door ze te exporteren in HTML- en XML-formaten. We hebben ook de Get-GpoReport
cmdlet besproken. Deze cmdlet kan nu dezelfde informatie ophalen als de GPMC via PowerShell. Dit stelt ons in staat om tegelijkertijd veel GPO’s te bevragen, wat zeker zal helpen bij het opbouwen van uitstekende rapporten.
Source:
https://infrasos.com/create-active-directory-policy-reports-with-powershell/