diff --git a/Docs/Backup-GPOZaurr.md b/Docs/Backup-GPOZaurr.md index cb1d4b2..612bbae 100644 --- a/Docs/Backup-GPOZaurr.md +++ b/Docs/Backup-GPOZaurr.md @@ -8,47 +8,130 @@ schema: 2.0.0 # Backup-GPOZaurr ## SYNOPSIS -{{ Fill in the Synopsis }} +Provides Backup functionality to Group Policies ## SYNTAX ``` Backup-GPOZaurr [[-LimitProcessing] ] [[-Type] ] [[-Forest] ] [[-ExcludeDomains] ] [[-IncludeDomains] ] [[-ExtendedForestInformation] ] - [[-GPOPath] ] [[-BackupPath] ] [-BackupDated] [-WhatIf] [-Confirm] [] + [[-BackupPath] ] [-BackupDated] [-WhatIf] [-Confirm] [] ``` ## DESCRIPTION -{{ Fill in the Description }} +Provides Backup functionality to Group Policies ## EXAMPLES -### Example 1 -```powershell -PS C:\> {{ Add example code here }} +### EXAMPLE 1 +``` +$GPOSummary = Backup-GPOZaurr -BackupPath "$Env:UserProfile\Desktop\GPO" -Verbose -Type All ``` -{{ Add example description here }} +$GPOSummary | Format-Table # only if you want to display output of backup + +### EXAMPLE 2 +``` +$GPOSummary = Backup-GPOZaurr -BackupPath "$Env:UserProfile\Desktop\GPO" -Verbose -Type All -BackupDated +``` + +$GPOSummary | Format-Table # only if you want to display output of backup ## PARAMETERS -### -BackupDated -{{ Fill BackupDated Description }} +### -LimitProcessing +Limits amount of GPOs that are backed up ```yaml -Type: SwitchParameter +Type: Int32 Parameter Sets: (All) Aliases: Required: False -Position: Named +Position: 1 +Default value: 0 +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Type +Provides a way to backup only Empty or Unlinked GPOs. +The default is All. + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: 2 +Default value: All +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -Forest +Target different Forest, by default current forest is used + +```yaml +Type: String +Parameter Sets: (All) +Aliases: ForestName + +Required: False +Position: 3 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExcludeDomains +Exclude domain from search, by default whole forest is scanned + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: + +Required: False +Position: 4 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -IncludeDomains +Include only specific domains, by default whole forest is scanned + +```yaml +Type: String[] +Parameter Sets: (All) +Aliases: Domain, Domains + +Required: False +Position: 5 +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + +### -ExtendedForestInformation +Ability to provide Forest Information from another command to speed up processing + +```yaml +Type: IDictionary +Parameter Sets: (All) +Aliases: + +Required: False +Position: 6 Default value: None Accept pipeline input: False Accept wildcard characters: False ``` ### -BackupPath -{{ Fill BackupPath Description }} +Path where to keep the backup ```yaml Type: String @@ -62,123 +145,18 @@ Accept pipeline input: False Accept wildcard characters: False ``` -### -Confirm -Prompts you for confirmation before running the cmdlet. +### -BackupDated +Whether cmdlet should created Dated folders for executed backup or not. +Keep in mind it's not nessecary and two backups made to same folder have their dates properly tagged ```yaml Type: SwitchParameter Parameter Sets: (All) -Aliases: cf +Aliases: Required: False Position: Named -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ExcludeDomains -{{ Fill ExcludeDomains Description }} - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 3 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -ExtendedForestInformation -{{ Fill ExtendedForestInformation Description }} - -```yaml -Type: IDictionary -Parameter Sets: (All) -Aliases: - -Required: False -Position: 5 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Forest -{{ Fill Forest Description }} - -```yaml -Type: String -Parameter Sets: (All) -Aliases: ForestName - -Required: False -Position: 2 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -GPOPath -{{ Fill GPOPath Description }} - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: - -Required: False -Position: 6 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -IncludeDomains -{{ Fill IncludeDomains Description }} - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: Domain, Domains - -Required: False -Position: 4 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -LimitProcessing -{{ Fill LimitProcessing Description }} - -```yaml -Type: Int32 -Parameter Sets: (All) -Aliases: - -Required: False -Position: 0 -Default value: None -Accept pipeline input: False -Accept wildcard characters: False -``` - -### -Type -{{ Fill Type Description }} - -```yaml -Type: String[] -Parameter Sets: (All) -Aliases: -Accepted values: All, Empty, Unlinked - -Required: False -Position: 1 -Default value: None +Default value: False Accept pipeline input: False Accept wildcard characters: False ``` @@ -199,16 +177,29 @@ Accept pipeline input: False Accept wildcard characters: False ``` +### -Confirm +Prompts you for confirmation before running the cmdlet. + +```yaml +Type: SwitchParameter +Parameter Sets: (All) +Aliases: cf + +Required: False +Position: Named +Default value: None +Accept pipeline input: False +Accept wildcard characters: False +``` + ### CommonParameters This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). ## INPUTS -### None - ## OUTPUTS -### System.Object ## NOTES +General notes ## RELATED LINKS diff --git a/Public/Backup-GPOZaurr.ps1 b/Public/Backup-GPOZaurr.ps1 index 205c2f4..6f14e44 100644 --- a/Public/Backup-GPOZaurr.ps1 +++ b/Public/Backup-GPOZaurr.ps1 @@ -1,4 +1,46 @@ function Backup-GPOZaurr { + <# + .SYNOPSIS + Provides Backup functionality to Group Policies + + .DESCRIPTION + Provides Backup functionality to Group Policies + + .PARAMETER LimitProcessing + Limits amount of GPOs that are backed up + + .PARAMETER Type + Provides a way to backup only Empty or Unlinked GPOs. The default is All. + + .PARAMETER Forest + Target different Forest, by default current forest is used + + .PARAMETER ExcludeDomains + Exclude domain from search, by default whole forest is scanned + + .PARAMETER IncludeDomains + Include only specific domains, by default whole forest is scanned + + .PARAMETER ExtendedForestInformation + Ability to provide Forest Information from another command to speed up processing + + .PARAMETER BackupPath + Path where to keep the backup + + .PARAMETER BackupDated + Whether cmdlet should created Dated folders for executed backup or not. Keep in mind it's not nessecary and two backups made to same folder have their dates properly tagged + + .EXAMPLE + $GPOSummary = Backup-GPOZaurr -BackupPath "$Env:UserProfile\Desktop\GPO" -Verbose -Type All + $GPOSummary | Format-Table # only if you want to display output of backup + + .EXAMPLE + $GPOSummary = Backup-GPOZaurr -BackupPath "$Env:UserProfile\Desktop\GPO" -Verbose -Type All -BackupDated + $GPOSummary | Format-Table # only if you want to display output of backup + + .NOTES + General notes + #> [cmdletBinding(SupportsShouldProcess)] param( [int] $LimitProcessing, @@ -7,7 +49,6 @@ [string[]] $ExcludeDomains, [alias('Domain', 'Domains')][string[]] $IncludeDomains, [System.Collections.IDictionary] $ExtendedForestInformation, - [string[]] $GPOPath, [string] $BackupPath, [switch] $BackupDated ) @@ -22,7 +63,7 @@ $Count = 0 } Process { - Get-GPOZaurr -Forest $Forest -IncludeDomains $IncludeDomains -ExcludeDomains $ExcludeDomains -ExtendedForestInformation $ExtendedForestInformation -GPOPath $GPOPath | ForEach-Object { + Get-GPOZaurr -Forest $Forest -IncludeDomains $IncludeDomains -ExcludeDomains $ExcludeDomains -ExtendedForestInformation $ExtendedForestInformation | ForEach-Object { if ($Type -contains 'All') { Write-Verbose "Backup-GPOZaurr - Backing up GPO $($_.DisplayName) from $($_.DomainName)" $Count++