目的: 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/ の値が含まれています!) と比較することで、これを確認しました。
他の誰かがこれを試みましたか、または Restore-GPO がバックアップ ファイルの内容を復元しない理由について、この動作を説明できますか?