by MichaelPS at 2013-01-11 06:12:56
Hey guys,by ArtB0514 at 2013-01-11 06:25:33
I want to backup all GPOs of all my domains. The backup for one domain works just fine, but I have a problem with multiple domains. So far I got this:
$Domain = (Get-ADForest).Domains | Foreach {
$GPO = Get-GPO -all -Domain $Domain | Foreach {
$strGPOName = $GPO.Displayname
$strId = $GPO.Id
OutLn "INFO: Backing up $strGPOName"
Backup-GPO -Guid $strId -Domain $Domain -path $strBackupLocation
Get-GPOReport -Guid $strId -Domain $Domain -reporttype html -path $GPODir\Report$name.html
}
}
(FYI: OutLn is a own function, and variables like strBackupLocation are defined earlier.)
I want to get all domains (Get-ADForest), then do something for each Domain (Get-GPO) and for each GPO do something else (Backup, Report…). I think the use of variables and loops is not correct in my example. Who could help me?
Thanks in advance!
Greets,
Michael
It looks like you are trying to use the value of $Domain before it’s defined. Try replacing the first line of your script with:by MichaelPS at 2013-01-11 06:43:21Foreach ($Domain In (Get-ADForest).Domains) {
I’m not sure this is the only issue in your script (for instance, I don’t see where the variable $name gets a value). So, I’m not sure that it will deliver what you want.
You’re right! The following code works just perfect, thank you!Foreach ($Domain in (Get-ADForest).Domains) {
Get-GPO -all -Domain $Domain | Foreach {
$strGPOName = $.Displayname
$strId = $.Id
OutLn "INFO: Backing up $strGPOName in Domain $Domain"
Backup-GPO -Guid $strId -Domain $Domain -path $strBackupLocation
Get-GPOReport -Guid $strId -Domain $Domain -reporttype html -path $GPODir\Report$Domain—$strGPOName.html
}
}