PowerShell DSC-Gruppenressource - "Es wurde kein Principal mit dem angegebenen Namen gefunden"

8

Ich versuche, PowerShell DSC zu verwenden, um der lokalen Administratorgruppe eine Domänengruppe hinzuzufügen. Hier ist der Code:

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

Dies führt zu folgendem Fehler, wenn ich es ausführe:

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

Der Principal existiert und ich kann ihn manuell über die GUI hinzufügen und verwenden net localgroup.

Ich weiß, dass DSC-Konfigurationen unter dem SYSTEMKonto ausgeführt werden, daher dachte ich, dass dies ein Berechtigungsproblem für das SYSTEMKonto sein könnte, das Active Directory abfragen möchte. Ich habe jedoch SYSTEMmit PsExec ein cmd als Konto ausgeführt und konnte der lokalen Administratorgruppe problemlos eine Domänengruppe hinzufügen.

Richard
quelle

Antworten:

4

Sie müssen die Anmeldeinformationen angeben:

Beispiel:

Weg, um die Anmeldeinformationen zu erhalten:

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

Und dies ist der Code, den Sie zum Konfigurieren der DSC-Ressource benötigen

$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
    }
}

Dann einfach ausführen

ProcessDscResources -ConfigurationData $ConfigurationData -OutputPath $folderPathTmp

Start-DscConfiguration -Wait -Force -Path $folderPathTmp
Jupaol
quelle
Vielen Dank @Jupaoi, dies war hilfreich und in den offiziellen Dokumenten ziemlich undokumentiert.
Nathan
Gibt es eine Möglichkeit, es zu sagen, sollte es nur "die aktuellen Anmeldeinformationen" verwenden
TGlatzer