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.

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.