web-dev-qa-db-ja.com

PowerShellDSCグループリソース-「指定された名前のプリンシパルが見つかりませんでした」

PowerShell DSCを使用して、ドメイングループをローカル管理者グループに追加しようとしています。コードは次のとおりです。

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

これを実行すると、次のエラーが発生します。

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

プリンシパルは存在し、GUIを介してnet localgroupを使用して手動で追加できます。

DSC構成がSYSTEMアカウントで実行されることを知っているので、ActiveDirectoryにクエリを実行するSYSTEMアカウントのアクセス許可の問題である可能性があると思いました。ただし、PsExecを使用してSYSTEMアカウントとしてcmdを実行し、問題なくローカル管理者グループにドメイングループを追加することができました。

8
Richard

資格情報を指定する必要があります。

例:

資格情報を取得する方法:

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

そしてこれは、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
    }
}

次に、単に実行します

ProcessDscResources -ConfigurationData $ConfigurationData -OutputPath $folderPathTmp

Start-DscConfiguration -Wait -Force -Path $folderPathTmp
4
Jupaol