2

目的: 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 がバックアップ ファイルの内容を復元しない理由について、この動作を説明できますか?

4

3 に答える 3

2

更新: DC 上の GPO の ini ファイルを直接変更する方法を見つけました。

このソリューションは API を使用しないため、これは HACK と見なされます。ただし、これまでのところ、私が遭遇した唯一の解決策です。

ADアーキテクチャとDCレプリケーションについて(その世界での限られた作業から)収集できたことから、DCのSYSVOLセクションは、変更がMMC経由で行われた場合と同じように、フォレスト内の他のDCにレプリケートされます. 誰でもこれを確認できますか?

注: 私が知る限り、このスクリプトは、影響を受ける GPO と同じ組織の DC からローカルで実行する必要があります。

$GPO = copy-gpo -SourceName "$GPOTemplateName" -TargetName "$NewGPOName" -CopyACL
#Found post referencing how to Manually Edit GPO's: http://blogg.husbanken.no/it/2013/04/13/manually-edit-gpo-settings/
$adGPO=[ADSI]"LDAP://$($GPO.path)";
$GPOFilePath = $adGPO.psbase.properties.gPCFileSysPath;

#Specifically the path to the GPO section affecting Folder Redirection
$GPOFolderRedirectionINIPath = "$GPOFilePath\User\Documents & Settings\fdeploy.ini";

#Functions for importing/exporting an INI file with Powershell in a very standard way:  http://blogs.technet.com/b/heyscriptingguy/archive/2011/08/20/use-powershell-to-work-with-any-ini-file.aspx
. ".\get-inicontent.ps1"; # From:  http://gallery.technet.microsoft.com/scriptcenter/ea40c1ef-c856-434b-b8fb-ebd7a76e8d91
. ".\out-inifile.ps1";   # From: http://gallery.technet.microsoft.com/scriptcenter/7d7c867f-026e-4620-bf32-eca99b4e42f4

$GPOFolderRedirectionINI = get-iniContent $GPOFolderRedirectionINIPath;
$GPOFolderRedirectionINI["My Documents"]["s-1-1-0"]="\\New\Path\To\CustomerFolder\%USERNAME%\"
$GPOFolderRedirectionINI | out-iniFile $GPOFolderRedirectionINIPath -Force

私はこれをPOCしましたが、それは適切に機能します。運が良ければ、他の誰かがこの方法が役立つと思うでしょう。ただし、誰かがこれを行うためのより良い方法を見つけることを願っています。

乾杯!

于 2013-07-10T14:56:12.873 に答える