所以我决定稍微改变一下代码,这样我就可以调试发生了什么。我添加了writeout $GPOBackup
和writeout $GPO
。有趣的是,这与我看到的相似。(示例取自 Microsoft 页面)
writeout $GPOBackup
为我提供:
C:\PS>
Backup-Gpo -Name TestGPO -Path C:\GpoBackups -Comment "Weekly Backup"
DisplayName : TestGPO
GpoId : 35c12ab3-956c-45d5-973b-46b17d225f47
Id : 2b509d4e-40f5-4337-82f7-458584555d0c
BackupDirectory : C:\GpoBackups
CreationTime : 2/25/2009 8:48:19 PM
DomainName : contoso.com
Comment : Weekly Backup
writeout $GPO
为我提供:
Id: 35c12ab3-956c-45d5-973b-46b17d225f47
DisplayName : TestGPO
Path: cn={35c12ab3-956c-45d5-973b-46b17d225f47}
正如您在第一个输出中看到的那样,有一个 GpoId 和一个 Id。第二个命令的输出突然将 Id 更改为最初的 GpoID。当backup-gpo
命令保存 GPO 时,它会使用您从第一个代码块收到的 Id 来保存它。然后 Id 更改为GpoId
. 我不知道为什么会发生这种情况,但无论如何,一旦我弄清楚了这一点,对我的修复就很简单了。以下代码允许我backup GPOs
作为DisplayName
Foreach ($GPO in $GPO_Temp_Backup) {
$GPOBackup = Backup-GPO -name $GPO.DisplayName -path ($Current_drive + $GPO_Backup_Location + "\" + "{" + $GPO.Id + "}") -domain $domain
rename-item -path ($Current_drive + $GPO_Backup_Location + "\" + "{" + $GPOBackup.Id + "}") -newname $GPO.DisplayName
}
$oldfilename = ($Current_drive + $GPO_Backup_Location + "\" + "{" + $GPOBackup.Id + "}")
write $oldfilename