Ressource de groupe PowerShell DSC - «Impossible de trouver un principal avec le nom fourni»

8

J'essaie d'utiliser PowerShell DSC pour ajouter un groupe de domaine au groupe d'administrateurs local. Voici le code:

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

Cela entraîne l'erreur suivante lorsque je l'exécute:

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

Le principal existe et je peux l'ajouter manuellement via l'interface graphique et en utilisant net localgroup.

Je sais que les configurations DSC sont exécutées sous le SYSTEMcompte, j'ai donc pensé que cela pourrait être un problème d'autorisations avec le SYSTEMcompte souhaitant interroger Active Directory. Cependant, j'ai exécuté un cmd comme SYSTEMcompte à l'aide de PsExec et j'ai pu ajouter un groupe de domaine au groupe d'administrateurs locaux sans aucun problème.

Richard
la source

Réponses:

4

Vous devez spécifier les informations d'identification:

Exemple:

Façon d'obtenir les informations d'identification:

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

Et c'est le code dont vous avez besoin pour configurer la ressource 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
    }
}

Ensuite, exécutez simplement

ProcessDscResources -ConfigurationData $ConfigurationData -OutputPath $folderPathTmp

Start-DscConfiguration -Wait -Force -Path $folderPathTmp
Jupaol
la source
Merci beaucoup @Jupaoi, cela a été utile et assez peu documenté dans les documents officiels.
Nathan
Y a-t-il un moyen de le dire, il devrait simplement utiliser "les informations d'identification actuelles"
TGlatzer