From ba9f741a8dd24fa39fe3e60a87d62bc0abf5ace1 Mon Sep 17 00:00:00 2001 From: Przemyslaw Klys Date: Thu, 14 May 2020 00:11:32 +0200 Subject: [PATCH] Repair inconsistency ACL --- .../Repair-GPOZaurrPermissionConsistency.ps1 | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 Public/Repair-GPOZaurrPermissionConsistency.ps1 diff --git a/Public/Repair-GPOZaurrPermissionConsistency.ps1 b/Public/Repair-GPOZaurrPermissionConsistency.ps1 new file mode 100644 index 0000000..fcb365b --- /dev/null +++ b/Public/Repair-GPOZaurrPermissionConsistency.ps1 @@ -0,0 +1,44 @@ +function Repair-GPOZaurrPermissionConsistency { + [cmdletBinding(SupportsShouldProcess, DefaultParameterSetName = 'Default')] + param( + [Parameter(ParameterSetName = 'GPOName')][string] $GPOName, + [Parameter(ParameterSetName = 'GPOGUID')][alias('GUID', 'GPOID')][string] $GPOGuid, + + [alias('ForestName')][string] $Forest, + [string[]] $ExcludeDomains, + [alias('Domain', 'Domains')][string[]] $IncludeDomains, + [System.Collections.IDictionary] $ExtendedForestInformation, + + [int] $LimitProcessing = [int32]::MaxValue + ) + $ConsistencySplat = @{ + Forest = $Forest + IncludeDomains = $IncludeDomains + ExcludeDomains = $ExcludeDomains + ExtendedForestInformation = $ExtendedForestInformation + Verbose = $VerbosePreference + } + if ($GPOName) { + $ConsistencySplat['GPOName'] = $GPOName + } elseif ($GPOGuid) { + $ConsistencySplat['GPOGuid'] = $GPOGUiD + } else { + $ConsistencySplat['Type'] = 'Inconsistent' + } + + Get-GPOZaurrPermissionConsistency @ConsistencySplat -IncludeGPOObject | Where-Object { + if ($_.ACLConsistent -eq $false) { + $_ + } + } | Select-Object -First $LimitProcessing | ForEach-Object { + #Write-Verbose "Repair-GPOZaurrPermissionConsistency - Repairing GPO consistency $($_.DisplayName) from domain: $($_.DomainName)" + if ($PSCmdlet.ShouldProcess($_.DisplayName, "Reparing GPO permissions consistency in domain $($_.DomainName)")) { + try { + $_.IncludeGPOObject.MakeAclConsistent() + } catch { + $ErrorMessage = $_.Exception.Message + Write-Warning "Repair-GPOZaurrPermissionConsistency - Failed to set consistency: $($ErrorMessage)." + } + } + } +} \ No newline at end of file