Använda autentiseringsuppgifter med DSC-resurser

Gäller för: Windows PowerShell 5.0, Windows PowerShell 5.1

Du kan köra en DSC-resurs under en angiven uppsättning autentiseringsuppgifter med hjälp av den automatiska egenskapen PsDscRunAsCredential i konfigurationen. Som standard kör DSC varje resurs som systemkonto. Det finns tillfällen när det är nödvändigt att köra som användare, till exempel att installera MSI-paket i en specifik användarkontext, ange en användares registernycklar, komma åt en användares specifika lokala katalog eller komma åt en nätverksresurs. SeInteractiveLogonRight krävs av måldatorn för alla konton som du anger till PSDSCRunAsCredential. Mer information finns i Kontorättskonstanter.

Varje DSC-resurs har en PsDscRunAsCredential-egenskap som kan anges till alla användarautentiseringsuppgifter (ett PSCredential-objekt ). Autentiseringsuppgifterna kan hårdkodas som värdet för egenskapen i konfigurationen, eller så kan du ange värdet till Get-Credential, vilket uppmanar användaren att ange en autentiseringsuppgift när konfigurationen kompileras (mer information om hur du kompilerar konfigurationer finns i Konfigurationer.

Anteckning

Det gick inte att använda egenskapen PsDscRunAsCredential i konfigurationer som anropar sammansatta resurser i PowerShell 5.0. I PowerShell 5.1 stöds egenskapen PsDscRunAsCredential i konfigurationer som anropar sammansatta resurser. Egenskapen PsDscRunAsCredential är inte tillgänglig i PowerShell 4.0.

I följande exempel Get-Credential används för att fråga användaren om autentiseringsuppgifter. Registerresursen används för att ändra registernyckeln som anger bakgrundsfärgen för Kommandotolken i Windows.

Configuration ChangeCmdBackGroundColor
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration

    Node $AllNodes.NodeName
    {
        Registry CmdPath
        {
            Key                  = 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor'
            ValueName            = 'DefaultColor'
            ValueData            = '1F'
            ValueType            = 'DWORD'
            Ensure               = 'Present'
            Force                = $true
            Hex                  = $true
            PsDscRunAsCredential = Get-Credential
        }
    }
}

$configData = @{
    AllNodes = @(
        @{
            NodeName             = 'localhost';
            PSDscAllowDomainUser = $true
            CertificateFile      = 'C:\publicKeys\targetNode.cer'
            Thumbprint           = '7ee7f09d-4be0-41aa-a47f-96b9e3bdec25'
        }
    )
}

ChangeCmdBackGroundColor -ConfigurationData $configData

Anteckning

Det här exemplet förutsätter att du har ett giltigt certifikat på C:\publicKeys\targetNode.ceroch att tumavtrycket för certifikatet är det värde som visas. Information om hur du krypterar autentiseringsuppgifter i MOF-filer för DSC-konfiguration finns i Skydda MOF-filen.