EvotecIT / GPOZaurr
- среда, 27 января 2021 г. в 00:27:38
PowerShell
Group Policy Eater is a PowerShell module that aims to gather information about Group Policies but also allows fixing issues that you may find in them.
GPOZaurr requires RSAT
installed to provide results. If you don't have them you can install them as below. Keep in mind it also installs GUI tools so it shouldn't be installed on user workstations.
# Windows 10 Latest
Add-WindowsCapability -Online -Name 'Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0'
Add-WindowsCapability -Online -Name 'Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0'
Finally just install module:
Install-Module -Name GPOZaurr -AllowClobber -Force
Force and AllowClobber aren't necessary, but they do skip errors in case some appear.
Update-Module -Name GPOZaurr
That's it. Whenever there's a new version, you run the command, and you can enjoy it. Remember that you may need to close, reopen PowerShell session if you have already used module before updating it.
The essential thing is if something works for you on production, keep using it till you test the new version on a test computer. I do changes that may not be big, but big enough that auto-update may break your code. For example, small rename to a parameter and your code stops working! Be responsible!
To understand the usage I've created blog post you may find useful
Invoke-GPOZaurr
Invoke-GPOZaurrContent
WindowsTimeService
typeInvoke-GPOZaurr
Invoke-GPOZaurr
Invoke-GPOZaurr
Invoke-GPOZaurr
Invoke-GPOZaurr
GPOConsistency
Invoke-GPOZaurr
Invoke-GPOZaurrContent
Get-GPOZaurr
GPOBrokenLink
Get-GPOZaurrBrokenLink
Repair-GPOZaurrBrokenLink
Get-GPOZaurr
GPOBrokenLink
Get-GPOZaurr
GPOBrokenLink
Get-GPOZaurrBrokenLink
Repair-GPOZaurrBrokenLink
Get-GPOZaurrLink
Other
to OrganizationalUnit
Get-GPOZaurrLinkSummary
Get-GPOZaurr
to properly detect linked GPOs in sites/cross-domainInvoke-GPOZaurrPermission
Other
to OrganizationalUnit
Invoke-GPOZaurr
GPOLinks
basic listGet-GPOZaurrBroken
ObjectClass Issue
Not available on SYSVOL
, Not available in AD
, Exists
, Permissions Issue
, ObjectClass Issue
Remove-GPOZaurrBroken
ObjectClass Issue
Invoke-GPOZaurr
GPOList
GPOOrphans
to GPOBroken
GPOBroken
with ObjectClass issue
Invoke-GPOZaurr
GPOPermissionsRead
GPOPermissions
Invoke-GPOZaurr
GPOList
- require GPO to be 7 days old for deletion to be proposedGPOPermissions
- one stop for permissionsRemove-GPOZaurr
- added RequireDays
parameter to prevent deletion of just modified GPOsGet-GPOZaurrPermissionAnalysis
Repair-GPOZaurrPermission
Invoke-GPOZaurr
GPOList
- fixed unexpected ending of cmdlet when error occurs (for example deleted GPO while script is running) which could impact resultsGet-GPOZaurr
- fixed unexpected ending of cmdlet when error occurs (for example deleted GPO while script is running), improved code baseInvoke-GPOZaurrSupport
Invoke-GPOZaurr
GPOList
- added more data, did small reorganizationInvoke-GPOZaurr
GPOList
- added more data, added Optimization StepSet-GPOZaurrStatus
Optimize-GPOZaurr
Invoke-GPOZaurrPermission
which would not remove permission due to internal changes earlier onBackup-GPOZaurr
Disabled
. It's now possbile to backup All
(default), Empty
,Unlinked
,Disabled
or a mix of themGPOPath
parameterInvoke-GPOZaurr
GPOList
- added ability for ExclusionsRemove-GPOZaurr
- added ExclusionsInvoke-GPOZaurr
GPOList
reverted charts colors for entries to match colorsSkip-GroupPolicy
to use within Invoke-GPOZaurr
Invoke-GPOZaurr
with basic support for ExclusionsGet-GPOZaurr
with basic support for ExclusionsRemove-GPOZaurrPermission
error handlingInvoke-GPOZaurrSupport
Invoke-GPOZaurr
GPOList
improved with more data, more problems and clearer informationRemove-GPOZaurr
Get-GPOZaurr
detecting more issues, delivering more dataInvoke-GPOZaurr
(WIP)
GPOPermissionsUnknown
Invoke-GPOZaurr
(WIP)
GPODuplicates
GPOPermissionsUnknown
Remove-GPOZaurrDuplicateObject
- removed Confirm
requirementGet-GPOZaurrNetLogon
with more verboseRepair-GPOZaurrNetLogonOwner
with more verbose and fix for LimitProcessing
Add-GPOZaurrPermission
Invoke-GPOZaurr
(WIP)
GPOPermissionsAdministrative
Add-GPOZaurrPermission
Remove-GPOZaurrBroken
Remove-GPOZaurrBroken
Invoke-GPOZaurr
(WIP)
NetLogonPermissions
into NetLogonPermissions
and NetLogonOwners
NetLogonPermissions
NetLogonOwners
Get-GPOZaurrFiles
Get-GPOZaurrNetLogon
Get-GPOZaurrNetLogon
Invoke-GPOZaurr
(WIP)
NetLogonPermissions
Get-GPOZaurrNetLogon
Invoke-GPOZaurr
(WIP)
Get-GPOZaurrPermissionIssue
to detect permission issue with no rightsInvoke-GPOZaurr
(WIP)
GPOPermissionsRead
improved detection of problems with low permissionsSet-GPOZaurrOwner
in case of missing permissions to not throw errorsInvoke-GPOZaurr
(WIP)
GPOPermissionsRead
addedInvoke-GPOZaurr
(WIP)
GPOOrphans
clearer options, updated texts, split per domainGPOOwners
clearer options, updated texts, split per domainAdd-GPOZaurrPermission
All
to process all GPOsRemove-GPOZaurrPermission
Set-GPOZaurrOwner
Force
to force GPO Owner
to any principal (normally only Domain Admins)Invoke-GPOZaurr
- type GPOOrphans
Remove-GPOZaurrBroken
more verboseGet-GPOZaurrBroken
more verboseInvoke-GPOZaurr
- type GPOOrphans
Invoke-GPOZaurr
- type GPOList
- needs more workGet-GPOZaurr
with better detection of Empty Policies (needs testing)Invoke-GPOZaurr
(WIP)Get-GPOZaurrNetLogon
to better handle errorsGet-GPOZaurrPermissionConsistency
to stop checking consistency if path doesn't existsInvoke-GPOZaurr
(WIP)Invoke-GPOZaurr
(WIP)Get-GPOZaurr
Invoke-GPOZaurr
(WIP)Invoke-GPOZaurr
(WIP)Get-GPOZaurrDuplicateObject
Remove-GPOZaurrDuplicateObject
Invoke-GPOZaurr
(WIP)Get-GPOZaurrNetLogon
Get-GPOZaurrOwner
Set-GPOZaurrOwner
Repair-GPOZaurrNetLogonOwner
Invoke-GPOZaurr
(WIP)Show-GPOZaurr
to Invoke-GPOZaurr
Invoke-GPOZaurr
to Invoke-GPOZaurrContent
Get-GPOZaurrPermissionConsistency
- don't check for inherited permissions if top level ones are inconsistentInvoke-GPOZaurr
(WIP)Show-GPOZaurr
(WIP)Show-GPOZaurr
(WIP)Show-GPOZaurr
(WIP)Remove-GPOZaurrOrphaned
to Remove-GPOZaurrBroken
keeping it as an aliasGet-GPOZaurrSysvol
to Get-GPOZaurrBroken
keeping it as an aliasShow-GPOZaurr
(WIP)Invoke-GPOZaurrContent
back to Invoke-GPOZaurr
Show-GPOZaurr
(WIP)OutputType
,OutputType
,Open
,Online
parameters to Invoke-GPOZaurr
Get-GPOZaurrNetLogon
Get-GPOZaurrOwner
Get-GPOZaurrSysvol
Invoke-GPOZaurr
to Invoke-GPOZaurrContent
- I want to use Invoke-GPOZaurr
for something elseGet-GPOZaurrPermissionConsistency
for GPOs without SYSVOL to be reported properlyGet-GPOZaurrPermissionRoot
Remove-GPOZaurrOrphanedSysvolFolders
to Remove-GPOZaurrOrphaned
Remove-GPOZaurrOrphaned
to deal with orphaned folders but also orphaned AD GPO (No sysvol data)Get-GPOZaurrSysVol
to detect orphaned SYSVOL or AD GPO objectsGet-GPOZaurrSysVol
to detect permissions issue when reading AD GPO objectsGet-GPOZaurrPermissionRoot
to show which users/groups have control over all GPOs (allowed to create/modify)Get-GPOZaurrPermissionSummary
to include Get-GPOZaurrPermissionRoot
custom permissionsRemove-GPOZaurrPermission
Get-GpoZaurrPermission
Get-GPOZaurrFiles
to better handle access issueGet-GPOZaurrFiles
from Limited
to ExtendedMetaData
and fixed missing columnsGet-GPOZaurrPermissionSummary
ConvertFrom-CSExtension
Find-CSExtension
Get-GPOZaurrPermissionSummary
Get-GPOZaurrPermissionSummary
Get-GPOZaurrPermissionSummary
Get-GPOZaurrPermissionSummary
Get-GPOZaurrInheritance
Invoke-GPOZaurrSupport
(WIP)ConvertFrom-CSExtension
Find-CSExtension
Get-GPOZaurrInheritance
Invoke-GPOZaurr
- still work in progressGet-GPOZaurrSysvolDFSR
Clear-GPOZaurrSysvolDFSR
(requires testing)Get-GPOZaurrFilesPolicyDefinition
Invoke-GPOZaurr
- still work in progressGet-GPOZaurrFiles
- still work in progressRemove-GPOZaurrOrphanedSysvolFolders
with backup and support for domainsGet-GPOZaurrAD
for better error reportingInvoke-GPOZaurr
- still work in progressGet-GPOZaurrAD
for CNF duplicatesSave-GPOZaurrFiles
Invoke-GPOZaurr
(alias: Find-GPO
) (heavy work in progress)Get-GPOZaurrLinkSummary
Get-GPOZaurrFiles
to list files on NETLOGON/SYSVOL shares with a lot of detailsGet-GPOZaurrLink
and SearchBase
parameterGet-GPOZaurrLink
- canonical link Trim() throwing errors if emptySkipDuplicates
to Invoke-GPOZaurrPermission
which prevents applying permissions over and over again if 1 GPO is linked to a multiple OU's within another OUGet-GPOZaurrLink
- same issue as described on my earlier blog - Get-ADObject : The server has returned the following error: invalid enumeration context..
WARNING: Get-GPOZaurrLink - Processing error The server has returned the following error: invalid enumeration context.
WARNING: Get-GPOZaurrLink - Processing error A referral was returned from the server
SkipDuplicates
for Get-GPOZaurrLink
Invoke-GPOZaurrPermission
with new parameter LimitAdministrativeGroupsToDomain
Invoke-GPOZaurrPermission
if it would be run without Administrative permission and GPO wouldn't be accessible for that userInvoke-GPOZaurrPermission
with new parameterset Level
Get-GPOZaurrLinkSummary