Recurso de grupo do DSC do PowerShell - “Não foi possível encontrar uma entidade com o nome fornecido”

8

Estou tentando usar o PowerShell DSC para adicionar um grupo de domínio ao grupo de administradores locais. Aqui está o código:

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

Isso está resultando no seguinte erro ao executá-lo:

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

O principal existe e posso adicioná-lo manualmente através da GUI e usando net localgroup.

Sei que as configurações do DSC são executadas sob a SYSTEMconta, então pensei que poderia ser um problema de permissão com a SYSTEMconta que deseja consultar o Active Directory. No entanto, eu SYSTEMexecutei um cmd como a conta usando o PsExec e consegui adicionar um grupo de domínio ao grupo de administradores locais sem nenhum problema.

Richard
fonte

Respostas:

4

Você precisa especificar as credenciais:

Exemplo:

Maneira de obter as credenciais:

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

E este é o código que você precisa para configurar o recurso 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
    }
}

Então simplesmente execute

ProcessDscResources -ConfigurationData $ConfigurationData -OutputPath $folderPathTmp

Start-DscConfiguration -Wait -Force -Path $folderPathTmp
Jupaol
fonte
Muito obrigado @Jupaoi, isso foi útil e não documentado nos documentos oficiais.
Nathan
Existe uma maneira de dizer isso, ele deve apenas usar "as credenciais atuais"
TGlatzer