目标:我正在尝试通过 Powershell (v3) 修改 GPO (2008R2 AD)。特别是用户配置 -> 策略 -> Windows 设置 -> 文件重定向 -> 文档 UNC 路径的值。
初步尝试:
import-module grouppolicy;
$StringToFind = "\\this\is\a\template\path";
$StringToRepalce="\\server123\%CustomerID%\%username%\Documents\";
$GPOBackupFolder = "C:\src\psh\gpoBackupEditRestore\backups";
$GPO = copy-gpo -SourceName "Customer GPO Template v1.4" -targetName "Customer $CustomerID" -CopyACL;
$GPOBackup = $Backup-GPO -guid $gpo.id -path $GPOBackupFolder;
$GPOBackupXMLPath="$GPOBackupFolder\$($GpoBackup.ID)\Backup.xml";
$GPOGPReportXMLPath="$GPOBackupFolder\$($GpoBackup.ID)\GPReport.xml";
$NewBackupXMLPath="$GPOBackupFolder\$($GpoBackup.ID)\nBackup.xml";
$NewGPReportXMLPath="$GPOBackupFolder\$($GpoBackup.ID)\nGPReport.xml";
$GPOBackup=gc $GPOBackupXMLPath;
$GPOGPReport= gc $GPOGPReportXMLPath;
foreach($line in $GPOBackup){ac $NewBackupXMLPath $line.Replace($StringToFind,$StringToReplace);}
foreach($line in $GPOGPReport){ac $NewGPReportXMLPath $line.Replace($StringToFind,$StringToReplace);}
remove-item -force $GPOBackupXMLPath;
remove-item -force $GPOGPReportXMLPath;
move-item -force $NewBackupXMLPath $GPOBackupXMLPath
move-item -force $NewGPReportXMLPath $GPOGPReportXMLPath
Remove-GPO -ID $GPO.ID #remove GPO before restore. deleting/commenting this line does not change outcome.
Restore-GPO -BackupID $GPOBackup.ID -Path $GPOBackupFolder
假设我在http://technet.microsoft.com/en-us/library/ee461027.aspx上正确阅读了信息,上面的 Powershell 片段应该将本地文件夹位置的 XML 还原到 AD 中的 GPO。[[我已确认模板值 ($StringToFind) 不会出现在 GPOBackupFolder 目录中的任何其他文件中。]]
但是,本地 XML 文件中的更改值不会恢复到 AD。我通过在恢复 GPO 并将初始(修改后的)备份文件(已恢复)与恢复后备份值(现在包含 /Original/ 值!)进行比较后对 GPO 进行额外备份来确认这一点。
有没有其他人尝试过这个和/或可以解释这种行为,为什么 Restore-GPO 不会恢复备份文件的内容?