New-GPOReport.ps1

Jan
24
2013

# Get-GPO.ps1
# Writen By Brandon Shell aka(BSonPosh)
# Gets GPO or GPOs according to Parameters
# Parameters
#  -Path:    Location for Reports
#  -GPOName: Name of the GPO
#  -GUID:    Unique GUID for GPO
# Switches
#  -All:     Reports for All GPO’s
#  -Verbose: Enables Verbose Logging
Param(
$Path = $(throw ‘$Path is required. Please provide location to save Report(s)’),
$GPOName,
$GUID,
[switch]$all,
[switch]$Verbose)

if($verbose){$verbosepreference = “continue”}else{$erroractionpreference = “SilentlyContinue”}
if(!($GPOName -or $GUID -or $All)){Write-Host “Please supply GPOName or -All to Import” -fore Yellow}
. “$pwd\Set-GPEnvironment.ps1″

if($GUID)
{
Write-Verbose ” – Getting GPO Object for $GUID”
$gpo = $gpmDomain.SearchGPOs($gpm.CreateSearchCriteria()) | Where-Object{$_.ID -eq “{$GUID}”}
$reportfile = “$path\$($GPO.DisplayName).xml”
Write-Verbose ” + Generating Report and saving to $reportfile”
$gpo.GenerateReportToFile($gpmconstants.ReportXML,$reportfile) | out-Null
if(test-Path $reportfile)
{
Write-Host “   – Report Created Successfully for [$($GPO.DisplayName)].” -fore Green
}
else
{
Write-Host “   – Report Created Failed for [$($GPO.DisplayName)]!” -fore Red
}
}

if($GPOName)
{
Write-Verbose ” – Getting GPO Object for $GPOName”
$gpo = $gpmDomain.SearchGPOs($gpm.CreateSearchCriteria()) | Where-Object{$_.DisplayName -eq $GPOName}
if($gpo.count){Write-Host “Found [$($gpo.count)] for Name [$GPOName]. Please use GUID.”;return}
$reportfile = “$path\$($GPO.DisplayName).xml”
Write-Verbose ” + Generating Report and saving to $reportfile”
$gpo.GenerateReportToFile($gpmconstants.ReportXML,$reportfile) | out-Null
if(test-Path $reportfile)
{
Write-Host “   – Report Created Successfully for [$($GPO.DisplayName)].” -fore Green
}
else
{
Write-Host “   – Report Created Failed for [$($GPO.DisplayName)]!” -fore Red
}
}

if($all)
{
foreach($gpo in ($gpmDomain.SearchGPOs($gpm.CreateSearchCriteria())))
{
Write-Verbose ” + Getting Report for $($gpo.DisplayName)”
$reportfile = “$path\$($GPO.DisplayName).xml”
Write-Verbose “   – Generating Report and saving to $reportfile”
$gpo.GenerateReportToFile($gpmconstants.ReportXML,$reportfile) | out-Null
if(test-Path $reportfile)
{
Write-Host “   – Report Created Successfully for [$($GPO.DisplayName)].” -fore Green
}
else
{
Write-Host “   – Report Created Failed for [$($GPO.DisplayName)]!” -fore Red
}
}
}
Write-Host