将凭据与 DSC 资源结合使用

适用于:Windows PowerShell 5.0 和 Windows PowerShell 5.1

可以通过在配置中使用 PsDscRunAsCredential 属性,在指定的一组凭据之下运行 DSC 资源。 默认情况下,DSC 以系统帐户身份运行每个资源。 有时需要以用户身份运行,例如在特定用户上下文中安装 MSI 程序包、设置用户的注册表项、访问用户的特定本地目录或访问网络共享。 对于您指定到 PSDSCRunAsCredential 的任何帐户,目标计算机都需要 SeInteractiveLogonRight。 有关详细信息,请参阅帐户权限常量

每个 DSC 资源都具有 PsDscRunAsCredential 属性,它可以设置为任何用户凭据(PSCredential 对象)。 凭据可以硬编码为配置中属性的值,你也可以将值设置为 Get-Credential,这会在编译配置时提示用户输入凭据(有关编译配置的信息,请参阅配置)。

注意

在 PowerShell 5.0 中,不支持在调用复合资源的配置中使用 PsDscRunAsCredential 属性。 在 PowerShell 5.1 中,支持在调用复合资源的配置中使用 PsDscRunAsCredential 属性。 PsDscRunAsCredential 属性在 PowerShell 4.0 中不可用。

在下面的示例中,Get-Credential 用于提示用户输入凭据。 Registry 资源用于更改可指定 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

注意

此示例假定你在 C:\publicKeys\targetNode.cer 上具有有效证书,并且该证书的指纹是显示的值。 有关在 DSC 配置 MOF 文件中加密凭据的信息,请参阅保护 MOF 文件