Windows-Server-2008-R2
PowerShell:複製 GPO 失敗,HRESULT:0x8007000D
在嘗試執行
Copy-GPO
cmdlet 以使用預定義的遷移表複製組策略對象時,我收到此異常:System.Runtime.InteropServices.COMException (0x8007000D): The data is invalid. (Exception from HRESULT: 0x8007000D) at Microsoft.GroupPolicy.GPMResultClass.OverallStatus() at Microsoft.GroupPolicy.Gpo.CopyTo(GPDomain targetDomain, String newDisplayName, Boolean copyAcl, GPMigrationTable migrationTable, GPStatusMessageCollection& statusMessages) at Microsoft.GroupPolicy.Commands.CopyGpoCommand.ProcessRecord() at System.Management.Automation.CommandProcessor.ProcessRecord() At C:\Users\djedig\Documents\OUCopy.ps1:335 char:2 + NewGPOsFromTemplate "OU=$sSubDomain,OU=$sDivision,$sBaseRessourcenDN" $sTmplBas ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,NewGPOsFromTemplate
This blog article表明這將是由於遷移表中無法解析的目標帳戶數據,但我似乎無法弄清楚可遷移數據的“正確”格式。
Copy-GPO
實際上,在沒有-MigrationTable
參數的情況下執行時 GPO 複製得很好。我的命令是:
Copy-GPO -SourceName $sTemplateGPOName -TargetName $sNewGPOName -MigrationTable $sMigrationTableFile
並且遷移表包含這兩種類型的少數條目:
<?xml version="1.0" encoding="utf-16"?> <MigrationTable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.microsoft.com/GroupPolicy/GPOOperations/MigrationTable"> <Mapping> <Type>LocalGroup</Type> <Source>Template-allow-logon@ad.syneticon.net</Source> <Destination>RA-K17-DE-allow-logon@ad.syneticon.net</Destination> </Mapping> [...] <Mapping> <Type>Unknown</Type> <Source>Administrators</Source> <DestinationSameAsSource /> </Mapping> </MigrationTable>
RA-K17-DE-allow-logon
安全組作為本地域組存在,並且 sAMAccountName 屬性確實設置為相同的值。令我困惑的是,GPMC 腳本範例集合中的CopyGPO.wsf腳本完全能夠使用相同的遷移表創建 GPO 副本,如下所示:
cscript "//NoLogo" "${env:ProgramFiles(x86)}\Microsoft Group Policy\GPMC Sample Scripts\CopyGPO.wsf" $sTemplateGPOName $sNewGPOName "/MigrationTable:`"$sMigrationTableFile`"" | Out-Null
那麼這裡出了什麼問題呢?
編輯:
源 GPO 對象僅定義受限組和使用者權限分配。這些策略中使用的所有安全主體都包含在可遷移文件中。
在較新的 Powershell 版本中,這不再是問題。我已經在 Powershell 5 和 5.1 中測試了基本相同的語法(在 Server 2008 R2 上安裝了適當的 WMF 版本之後)並且它完美地工作。所以這似乎是 Powershell 2 中的一個錯誤。
我花了整整 60 秒的時間看這個,所以這是在黑暗中拍攝的,但是這個 PowerShell 對象名稱在你的腳本中拼寫正確嗎? Resource
$sBaseRessourcenDN
中的雙“s”似乎不合適,更不用說隨機的“n”了。