Ресурс группы PowerShell DSC - «Не удалось найти принципала с указанным именем»

8

Я пытаюсь использовать PowerShell DSC для добавления группы домена в группу локальных администраторов. Вот код:

Configuration TestSetup {
    Node localhost {
        Group Administrators {
            GroupName = "Administrators"
            MembersToInclude = "MYDOMAIN\TheAdministratorsGroup"
        }
    }
}

Это приводит к следующей ошибке при запуске:

PowerShell provider MSFT_GroupResource  failed to execute Test-TargetResource functionality with error message: Could not find a principal with the provided name [mydomain\theadministratorsgroup]
    + CategoryInfo          : InvalidOperation: (:) [], CimException
    + FullyQualifiedErrorId : ProviderOperationExecutionFailure
    + PSComputerName        : localhost

Принципал существует, и я могу добавить его вручную через графический интерфейс и используя net localgroup.

Я знаю, что настройки DSC выполняются под SYSTEMучетной записью, поэтому я подумал, что это может быть проблема с разрешениями SYSTEMучетной записи, желающей запросить Active Directory. Однако я запустил cmd в качестве SYSTEMучетной записи, используя PsExec, и мне удалось без проблем добавить группу домена в группу локальных администраторов.

Ричард
источник

Ответы:

4

Вы должны указать учетные данные:

Пример:

Способ получения учетных данных:

$securedstring = ConvertTo-SecureString -String $Password -AsPlainText -Force
[PSCredential]$cred = New-Object System.Management.Automation.PSCredential ($UserName, $securedstring)

И это код, вам нужно настроить ресурс DSC

$ConfigurationData = @{
    AllNodes = @(
        @{
            NodeName="*"
            PSDscAllowPlainTextPassword=$true
         }
        @{
            NodeName="SRV2-WS2012R2"
         }
        @{
            NodeName="SRV3-WS2012R2"
         }
   )
}


Node $AllNodes.NodeName
{
    LocalConfigurationManager
    {
        RebootNodeIfNeeded = $false
    }

    Group $group.Name
    {
        GroupName = $group.Name
        Ensure = $group.Ensure
        Members = $group.Members
        Credential = $cred
    }
}

Тогда просто выполните

ProcessDscResources -ConfigurationData $ConfigurationData -OutputPath $folderPathTmp

Start-DscConfiguration -Wait -Force -Path $folderPathTmp
Jupaol
источник
Большое спасибо @Jupaoi, это было полезно и довольно недокументировано в официальных документах.
Натан
Есть ли способ сказать это, он должен просто использовать «текущие учетные данные»
TGlatzer