$domain = 'cascades.local'
$gpoName = 'CSC - Folder Redirection'

$gpo = Get-GPO -Name $gpoName -Domain $domain -EA Stop
Write-Output "GPO: $($gpo.DisplayName)"
Write-Output "GUID: {$($gpo.Id.ToString().ToUpper())}"
Write-Output "Status: $($gpo.GpoStatus)"
Write-Output ""

Write-Output "=== Security Filter (who this GPO applies to) ==="
Get-GPPermission -Name $gpoName -Domain $domain -All | ForEach-Object {
    Write-Output "  $($_.Trustee.Name) [$($_.Trustee.TrusteeType)] — $($_.Permission)"
}

Write-Output ""
Write-Output "=== GPO Links ==="
$report = Get-GPOReport -Name $gpoName -Domain $domain -ReportType Xml
$xml = [xml]$report
$links = $xml.GPO.LinksTo
if ($links) {
    foreach ($l in $links) {
        Write-Output "  $($l.SOMPath) — Enabled: $($l.Enabled) — NoOverride: $($l.NoOverride)"
    }
} else {
    Write-Output "  (no links)"
}

Write-Output ""
Write-Output "=== SYSVOL contents ==="
$srv = 'CS-SERVER'
$sysvol = "\\$srv\SYSVOL\$domain\Policies"
$guid = "{$($gpo.Id.ToString().ToUpper())}"
Get-ChildItem "$sysvol\$guid" -Recurse -EA SilentlyContinue | ForEach-Object {
    $rel = $_.FullName.Replace("$sysvol\$guid", '')
    $type = if ($_.PSIsContainer) { '[DIR]' } else { "[FILE $($_.Length)b]" }
    Write-Output "  $type $rel"
}
