Ao tentar executar o cmdlet Copy-GPO
para copiar um Objeto de Diretiva de Grupo usando uma Tabela de migração > predefinida, estou recebendo essa exceção:
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
Este artigo do blog sugere que seria ser devido a dados de contas de destino não resolvidos dentro da tabela de migração, mas parece que não consigo descobrir o formato "correto" dos dados migtable. Na verdade, o GPO copia muito bem quando executa Copy-GPO
sem o parâmetro -MigrationTable
.
Meu comando é:
Copy-GPO -SourceName $sTemplateGPOName -TargetName $sNewGPOName -MigrationTable $sMigrationTableFile
e a tabela de migração contém algumas entradas desses dois tipos:
<?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>[email protected]</Source>
<Destination>[email protected]</Destination>
</Mapping>
[...]
<Mapping>
<Type>Unknown</Type>
<Source>Administrators</Source>
<DestinationSameAsSource />
</Mapping>
</MigrationTable>
O grupo de segurança RA-K17-DE-allow-logon
é presente como um grupo de domínio local e o atributo sAMAccountName é realmente definido com o mesmo valor.
O que mais me intriga é o fato de que o CopyGPO.wsf da coleção de amostras de scripts do GPMC é perfeitamente capaz de criar uma cópia de GPO usando a mesma tabela de migração como esta:
cscript "//NoLogo" "${env:ProgramFiles(x86)}\Microsoft Group Policy\GPMC Sample Scripts\CopyGPO.wsf" $sTemplateGPOName $sNewGPOName "/MigrationTable:'"$sMigrationTableFile'"" | Out-Null
Então, o que está errado aqui?
Editar:
O objeto de GPO de origem apenas define grupos restritos e atribuições de direitos de usuário. Todas as entidades de segurança usadas nessas políticas estão incluídas no arquivo migtable.