From c879c48b32054231d7b227181a452dcb6c68641b Mon Sep 17 00:00:00 2001 From: Przemyslaw Klys Date: Mon, 11 May 2020 11:08:55 +0200 Subject: [PATCH] Update to Get-GPOZaurrPermission --- Public/Get-GPOZaurrPermission.ps1 | 44 +++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/Public/Get-GPOZaurrPermission.ps1 b/Public/Get-GPOZaurrPermission.ps1 index 3f9236b..ce63acf 100644 --- a/Public/Get-GPOZaurrPermission.ps1 +++ b/Public/Get-GPOZaurrPermission.ps1 @@ -7,7 +7,10 @@ [Parameter(ParameterSetName = 'GPOGUID')] [alias('GUID', 'GPOID')][string] $GPOGuid, - [validateSet('Unknown', 'NotWellKnown', 'NotWellKnownAdministrative', 'NotAdministrative', 'Administrative','All')][string[]] $Type = 'All', + [string[]] $Principal, + [validateset('DistinguishedName', 'Name', 'Sid')][string] $PrincipalType = 'Sid', + + [validateSet('Unknown', 'NotWellKnown', 'NotWellKnownAdministrative', 'NotAdministrative', 'Administrative', 'All')][string[]] $Type = 'All', [switch] $SkipWellKnown, [switch] $SkipAdministrative, @@ -48,24 +51,49 @@ } } } - } Process { foreach ($Domain in $ForestInformation.Domains) { $QueryServer = $ForestInformation['QueryServers'][$Domain]['HostName'][0] if ($GPOName) { - Get-GPO -Name $GPOName -Domain $Domain -Server $QueryServer -ErrorAction SilentlyContinue | ForEach-Object -Process { - Get-PrivPermission -Accounts $Accounts -Type $Type -GPO $_ -SkipWellKnown:$SkipWellKnown.IsPresent -SkipAdministrative:$SkipAdministrative.IsPresent -IncludeOwner:$IncludeOwner.IsPresent -IncludeGPOObject:$IncludeGPOObject.IsPresent -IncludePermissionType $IncludePermissionType -ExcludePermissionType $ExcludePermissionType -ADAdministrativeGroups $ADAdministrativeGroups + $getGPOSplat = @{ + Name = $GPOName + Domain = $Domain + Server = $QueryServer + ErrorAction = 'SilentlyContinue' } } elseif ($GPOGuid) { - Get-GPO -Guid $GPOGuid -Domain $Domain -Server $QueryServer -ErrorAction SilentlyContinue | ForEach-Object -Process { - Get-PrivPermission -Accounts $Accounts -Type $Type -GPO $_ -SkipWellKnown:$SkipWellKnown.IsPresent -SkipAdministrative:$SkipAdministrative.IsPresent -IncludeOwner:$IncludeOwner.IsPresent -IncludeGPOObject:$IncludeGPOObject.IsPresent -IncludePermissionType $IncludePermissionType -ExcludePermissionType $ExcludePermissionType -ADAdministrativeGroups $ADAdministrativeGroups + $getGPOSplat = @{ + Guid = $GPOGuid + Domain = $Domain + Server = $QueryServer + ErrorAction = 'SilentlyContinue' } } else { - Get-GPO -All -Domain $Domain -Server $QueryServer | ForEach-Object -Process { - Get-PrivPermission -Accounts $Accounts -Type $Type -GPO $_ -SkipWellKnown:$SkipWellKnown.IsPresent -SkipAdministrative:$SkipAdministrative.IsPresent -IncludeOwner:$IncludeOwner.IsPresent -IncludeGPOObject:$IncludeGPOObject.IsPresent -IncludePermissionType $IncludePermissionType -ExcludePermissionType $ExcludePermissionType -ADAdministrativeGroups $ADAdministrativeGroups + $getGPOSplat = @{ + All = $true + Domain = $Domain + Server = $QueryServer + ErrorAction = 'SilentlyContinue' } } + Get-GPO @getGPOSplat | ForEach-Object -Process { + $getPrivPermissionSplat = @{ + Principal = $Principal + PrincipalType = $PrincipalType + Accounts = $Accounts + Type = $Type + GPO = $_ + SkipWellKnown = $SkipWellKnown.IsPresent + SkipAdministrative = $SkipAdministrative.IsPresent + IncludeOwner = $IncludeOwner.IsPresent + IncludeGPOObject = $IncludeGPOObject.IsPresent + IncludePermissionType = $IncludePermissionType + ExcludePermissionType = $ExcludePermissionType + ADAdministrativeGroups = $ADAdministrativeGroups + } + Get-PrivPermission @getPrivPermissionSplat + } } } End {