Назад | Перейти на главную страницу

PowerShell: сбой копирования GPO с HRESULT: 0x8007000D

При попытке запустить Copy-GPO командлет для копирования объекта групповой политики с использованием предопределенного Таблица миграции Я получаю это исключение:

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

Эта статья в блоге предполагает, что это может быть связано с неразрешимыми данными целевой учетной записи в таблице миграции, но мне кажется, что я не могу определить «правильный» формат переносимых данных. Действительно, GPO просто отлично копирует при запуске Copy-GPO без -MigrationTable параметр.

Моя команда:

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 действительно установлено одно и то же значение.

Что меня бесконечно озадачивает, так это то, что КопироватьGPO.wsf сценарий из коллекции примеров сценариев GPMC отлично может создать копию объекта групповой политики, используя ту же самую таблицу миграции, например:

cscript "//NoLogo" "${env:ProgramFiles(x86)}\Microsoft Group Policy\GPMC Sample Scripts\CopyGPO.wsf" $sTemplateGPOName $sNewGPOName "/MigrationTable:`"$sMigrationTableFile`"" | Out-Null

Так что здесь не так?

Редактировать:

Исходный объект GPO просто определяет группы с ограниченным доступом и назначение прав пользователей. Все участники безопасности, используемые в этих политиках, включены в файл migtable.

Это больше не проблема в более поздних версиях Powershell. Я тестировал практически тот же синтаксис в Powershell 5 и 5.1 (после установки соответствующей версии WMF на Server 2008 R2), и он работает безупречно. Похоже, это ошибка в Powershell 2.

Я потратил на это все 60 секунд, так что это снимок в темноте, но правильно ли написано имя объекта PowerShell в вашем скрипте? $sBaseRessourcenDN Двойная 's' в Ресурс кажется неуместным, не говоря уже о случайном "n".