From e2aa7af83d4723d575cb90fe29fa9f6569355e6d Mon Sep 17 00:00:00 2001 From: Przemyslaw Klys Date: Tue, 10 Aug 2021 16:12:02 +0200 Subject: [PATCH] Added exclusions --- Public/Get-GPOZaurrOrganizationalUnit.ps1 | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/Public/Get-GPOZaurrOrganizationalUnit.ps1 b/Public/Get-GPOZaurrOrganizationalUnit.ps1 index 5f99997..6b5d5f6 100644 --- a/Public/Get-GPOZaurrOrganizationalUnit.ps1 +++ b/Public/Get-GPOZaurrOrganizationalUnit.ps1 @@ -6,10 +6,12 @@ [alias('Domain', 'Domains')][string[]] $IncludeDomains, [System.Collections.IDictionary] $ExtendedForestInformation, - [ValidateSet('OK', 'Unlink', 'Delete')][string[]] $Option + [ValidateSet('OK', 'Unlink', 'Delete')][string[]] $Option, + [alias('ExcludeOU', 'Exclusions')][string[]] $ExcludeOrganizationalUnit ) $CachedOu = [ordered] @{} $CachedGPO = [ordered] @{} + $ForestInformation = Get-WinADForestDetails -Extended -Forest $Forest -IncludeDomains $IncludeDomains -ExcludeDomains $ExcludeDomains -ExtendedForestInformation $ExtendedForestInformation $GroupPolicies = Get-GPOZaurrAD -Forest $Forest -IncludeDomains $IncludeDomains -ExcludeDomains $ExcludeDomains -ExtendedForestInformation $ExtendedForestInformation foreach ($GPO in $GroupPolicies) { @@ -96,7 +98,6 @@ $Status = 'OK' } - if ($Option) { $Found = $false if ($Option -contains 'Ok' -and $Status -contains 'OK') { @@ -106,12 +107,28 @@ } elseif ($Option -contains 'Delete' -and $Status -contains 'Delete OU') { $Found = $true } + if ($ExcludeOrganizationalUnit) { + foreach ($ExcludedOU in $ExcludeOrganizationalUnit) { + if ($OU -like $ExcludedOU) { + $Found = $false + break + } + } + } if (-not $Found) { continue } + } else { + if ($ExcludeOrganizationalUnit) { + foreach ($ExcludedOU in $ExcludeOrganizationalUnit) { + if ($OU -like $ExcludedOU) { + $Status = 'Excluded' + break + } + } + } } - [PSCustomObject] @{ Organizationalunit = $OU Level = $CachedOu[$OU]['Level']