diff --git a/Private/Invoke.GPOZaurrDuplicate.ps1 b/Private/Invoke.GPOZaurrDuplicate.ps1 new file mode 100644 index 0000000..43ae0e3 --- /dev/null +++ b/Private/Invoke.GPOZaurrDuplicate.ps1 @@ -0,0 +1,20 @@ +$GPOZaurrDuplicates = [ordered] @{ + Name = 'Duplicate (CNF) Group Policies' + Enabled = $true + Data = $null + Execute = { + Get-GPOZaurrDuplicateObject + } + Processing = { + + } + Variables = @{ + + } + Overview = { + + } + Solution = { + New-HTMLTable -DataTable $GPOZaurrDuplicates['Data'] -Filtering + } +} \ No newline at end of file diff --git a/Private/Invoke.GPOZaurrOrphans.ps1 b/Private/Invoke.GPOZaurrOrphans.ps1 index 0e056d0..7801467 100644 --- a/Private/Invoke.GPOZaurrOrphans.ps1 +++ b/Private/Invoke.GPOZaurrOrphans.ps1 @@ -53,28 +53,31 @@ } -Title 'Broken / Orphaned Group Policies' -TitleAlignment center } } + Summary = { + New-HTMLPanel { + New-HTMLText -TextBlock { + "Group Policies are stored in two places - Active Directory (metadata) and SYSVOL (content)." + "Since those are managed in different ways, replicated in different ways it's possible because of different issues they get out of sync." + } -FontSize 10pt + New-HTMLText -Text "For example:" -FontSize 10pt -FontWeight bold + New-HTMLList -Type Unordered { + New-HTMLListItem -Text 'USN Rollback in AD could cause already deleted Group Policies to reapper in Active Directory, yet SYSVOL data would be unavailable' + New-HTMLListItem -Text 'Group Policy deletion failing to delete GPO content' + New-HTMLListItem -Text 'Permission issue preventing deletion of GPO content' + New-HTMLListItem -Text 'Failing DFSR replication between DCs' + } -FontSize 10pt + New-HTMLText -Text 'Following problems were detected:' -FontSize 10pt -FontWeight bold + New-HTMLList -Type Unordered { + New-HTMLListItem -Text 'Group Policies on SYSVOL, but no details in AD: ', $GPOZaurrOrphans['Variables']['NotAvailableInAD'] -FontWeight normal, bold + New-HTMLListItem -Text 'Group Policies in AD, but no content on SYSVOL: ', $GPOZaurrOrphans['Variables']['NotAvailableOnSysvol'] -FontWeight normal, bold + New-HTMLListItem -Text "Group Policies which couldn't be assed due to permissions issue: ", $GPOZaurrOrphans['Variables']['NotAvailablePermissionIssue'] -FontWeight normal, bold + } -FontSize 10pt + New-HTMLText -Text "Please review output in table and follow the steps below table to get Active Directory Group Policies in healthy state." -FontSize 10pt + } + } Solution = { New-HTMLSection -Invisible { - New-HTMLPanel { - New-HTMLText -TextBlock { - "Group Policies are stored in two places - Active Directory (metadata) and SYSVOL (content)." - "Since those are managed in different ways, replicated in different ways it's possible because of different issues they get out of sync." - } -FontSize 10pt - New-HTMLText -Text "For example:" -FontSize 10pt -FontWeight bold - New-HTMLList -Type Unordered { - New-HTMLListItem -Text 'USN Rollback in AD could cause already deleted Group Policies to reapper in Active Directory, yet SYSVOL data would be unavailable' - New-HTMLListItem -Text 'Group Policy deletion failing to delete GPO content' - New-HTMLListItem -Text 'Permission issue preventing deletion of GPO content' - New-HTMLListItem -Text 'Failing DFSR replication between DCs' - } -FontSize 10pt - New-HTMLText -Text 'Following problems were detected:' -FontSize 10pt -FontWeight bold - New-HTMLList -Type Unordered { - New-HTMLListItem -Text 'Group Policies on SYSVOL, but no details in AD: ', $GPOZaurrOrphans['Variables']['NotAvailableInAD'] -FontWeight normal, bold - New-HTMLListItem -Text 'Group Policies in AD, but no content on SYSVOL: ', $GPOZaurrOrphans['Variables']['NotAvailableOnSysvol'] -FontWeight normal, bold - New-HTMLListItem -Text "Group Policies which couldn't be assed due to permissions issue: ", $GPOZaurrOrphans['Variables']['NotAvailablePermissionIssue'] -FontWeight normal, bold - } -FontSize 10pt - New-HTMLText -Text "Please review output in table and follow the steps below table to get Active Directory Group Policies in healthy state." -FontSize 10pt - } + & $GPOZaurrOrphans['Summary'] New-HTMLPanel { New-HTMLChart { New-ChartBarOptions -Type barStacked diff --git a/Private/Invoke.GPOZaurrPassword.ps1 b/Private/Invoke.GPOZaurrPassword.ps1 new file mode 100644 index 0000000..b89c3be --- /dev/null +++ b/Private/Invoke.GPOZaurrPassword.ps1 @@ -0,0 +1,20 @@ +$GPOZaurrPassword = [ordered] @{ + Name = 'Group Policy Passwords' + Enabled = $true + Data = $null + Execute = { + Get-GPOZaurrPassword + } + Processing = { + + } + Variables = @{ + + } + Overview = { + + } + Solution = { + New-HTMLTable -DataTable $GPOZaurrPassword['Data'] -Filtering + } +} \ No newline at end of file diff --git a/Private/Script.GPOConfiguration.ps1 b/Private/Script.GPOConfiguration.ps1 index f7977d7..8c02955 100644 --- a/Private/Script.GPOConfiguration.ps1 +++ b/Private/Script.GPOConfiguration.ps1 @@ -2,7 +2,9 @@ GPOOrphans = $GPOZaurrOrphans GPOOwners = $GPOZaurrOwners GPOConsistency = $GPOZaurrConsistency + GPODuplicates = $GPOZaurrDuplicates GPOList = $GPOZaurrList + GPOPassword = $GPOZaurrPassword GPOPermissions = $GPOZaurrPermissions GPOPermissionsRoot = $GPOZaurrPermissionsRoot GPOFiles = $GPOZaurrFiles