This article contains Powershell script which will backup Active Directory Group Policy Objects.
<#Description:
This script will create folder for each start of this script
and perform backup of GPO's in actual domain joined computer.
Then will remove old backups specified in variable below.
#>
#-----User variables to modify-----#
$Path = "C:\Backups\GPO-Backup" #Destination backup folder
$Days = "30" #How many days to keep in backup $Path folder
#----------------------------------#
#--Execution code (do not touch)---#
$ActualDate = (Get-Date -Format d.M.yyyy__H_mm_s) #Actual date for folder creation
$sw = [system.diagnostics.stopwatch]::startNew()
If ((Test-Path -Path $Path)) {
If (Get-Module -ListAvailable -Name GroupPolicy) {
$sw.Start()
Import-Module GroupPolicy -ErrorAction Stop
New-Item -Path "$Path\$ActualDate" -ItemType directory
Start-Transcript -Path "$Path\$ActualDate\TranscriptLog.txt" #To Keep GpoId and Id history to better identify GPOs
Backup-GPO -All -Path "$Path\$ActualDate"
$DeleteFolders = (Get-ChildItem -Path $Path | Where-Object PSIsContainer -eq "True" | Where-Object CreationTime -le (Get-Date).AddDays(-$Days) ) | Remove-Item -Force -Recurse
$sw.Stop()
Write-Output "Finished! Removed backup GPO folders based on '$Days' days retention period. Elapsed time: $($sw.Elapsed.Seconds) seconds."
Stop-Transcript
}#EndIf
Else {
Write-Warning "Script stopped! GroupPolicy module is not installed on this machine!"
}#EndElse
}#EndIf
Else {
Write-Warning "Script stopped! Provided path '$Path' does not exist!"
}#EndElse
#----------------------------------#