Recurso de grupo de PowerShell DSC: "No se pudo encontrar un principal con el nombre proporcionado"

8

Estoy tratando de usar PowerShell DSC para agregar un grupo de dominio al grupo de administradores locales. Aquí está el código:

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

Esto resulta en el siguiente error cuando lo ejecuto:

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

El principal existe y puedo agregarlo manualmente a través de la GUI y el uso net localgroup.

Sé que las configuraciones DSC se ejecutan bajo la SYSTEMcuenta, así que pensé que podría ser un problema de permisos con la SYSTEMcuenta que desea consultar Active Directory. Sin embargo, SYSTEMejecuté un cmd como cuenta usando PsExec y pude agregar un grupo de dominio al grupo de administradores locales sin ningún problema.

Ricardo
fuente

Respuestas:

4

Debe especificar las credenciales:

Ejemplo:

Forma de obtener las credenciales:

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

Y este es el código que necesita para configurar el 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
    }
}

Entonces simplemente ejecute

ProcessDscResources -ConfigurationData $ConfigurationData -OutputPath $folderPathTmp

Start-DscConfiguration -Wait -Force -Path $folderPathTmp
Jupaol
fuente
Muchas gracias @Jupaoi, esto fue útil y bastante indocumentado en los documentos oficiales.
Nathan
¿Hay alguna manera de decirlo? Debería usar "las credenciales actuales"
TGlatzer