所需状态配置中的凭据

时间:2017-03-28 19:37:48

标签: powershell dsc

我有以下所需状态配置(DSC)

Configuration Cert
{
    param (
        [Parameter(Mandatory=$true)] 
        [ValidateNotNullorEmpty()] 
        [System.String] $machineName,

        [Parameter(Mandatory = $true)]
        [ValidateNotNullorEmpty()]
        [PSCredential]
        $certCredential
    )

    Import-DscResource -ModuleName xPSDesiredStateConfiguration, xCertificate

    Node $machineName 
    {
        xPfxImport cert
        {
            Ensure = 'Present'
            Path = 'C:\certificate.pfx'
            Thumbprint = 'abcdefg'
            Location = 'LocalMachine'
            Store = 'My'
            Exportable = $true
            Credential = $certCredential
        }
    } 
}  
$cd = @{
    AllNodes = @(
    @{
        NodeName = 'localhost'
        PSDscAllowPlainTextPassword = $true
    }
)

}

$secpasswd = ConvertTo-SecureString 'password' -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ('x', $secpasswd)

Cert -machineName MyPC -certCredential $mycreds -ConfigurationData $cd

Start-DscConfiguration –Path .\Cert –Wait –Verbose -Force

当我尝试执行此操作时,我收到以下错误:

  

ConvertTo-MOFInstance:System.InvalidOperationException错误处理属性' Credential' OF TYPE' xPfxImport':   不建议将加密密码转换和存储为纯文本。有关保护凭据的更多信息,请参阅   MOF文件,请参阅MSDN博客:http://go.microsoft.com/fwlink/?LinkId=393729   在C:\ Users \ x \ Desktop \ script.ps1:18 char:9   + xPfxImport   在行:341 char:16   + $ aliasId = ConvertTo-MOFInstance $ keywordName $ canonicalizedValue   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~       + CategoryInfo:InvalidOperation :( :) [Write-Error],InvalidOperationException       + FullyQualifiedErrorId:FailToProcessProperty,ConvertTo-MOFInstance   处理配置' Cert'时发生编译错误。请查看错误流中报告的错误   适当修改配置代码。   在C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ PSDesiredStateConfiguration \ PSDesiredStateConfiguration.psm1:3917   焦炭:5   +抛出$ ErrorRecord   + ~~~~~~~~~~~~~~~~~~       + CategoryInfo:InvalidOperation:(Cert:String)[],InvalidOperationException       + FullyQualifiedErrorId:FailToProcessConfiguration

我意识到密码必须加密并保存为普通密码是不允许的,或者至少不建议使用密码。我在互联网上尝试了许多建议但我仍然无法使其正常工作。

我正在寻找一种安装证书的方法,并在此之后提供某些设置的证书权限。

2 个答案:

答案 0 :(得分:1)

您需要允许plaintextcredentialslink

Configuration DomainCredentialExample
{
param(
    [PSCredential]$DomainCredential
)
    Import-DscResource -ModuleName PSDesiredStateConfiguration

    Node $AllNodes.NodeName
    {
        Group DomainUserToLocalGroup
        {
            GroupName        = 'InfoSecBackDoor'
            MembersToInclude = 'contoso\notyouraccount'
            Credential       = $DomainCredential
        }
    }
}

$cd = @{
    AllNodes = @(
        @{
            NodeName="localhost"
            PSDscAllowPlainTextPassword=$true
        }
    )
}

$cred = Get-Credential -UserName contoso\genericuser -Message "Password please"
DomainCredentialExample -DomainCredential $cred -ConfigurationData $cd

答案 1 :(得分:1)

发现自己也面临着同样的问题,我只是想重申一下该问题的实际原因(实际上已隐藏在评论中):

  

最后一条评论使我想到了真正的问题。我没有意识到节点名称实际上是导致问题的原因。请将节点本地主机行(8)更改为节点$ AllNodes.NodeName和NodeName =“ *”回到NodeName =“ localhost”

仔细检查PSDesiredStateConfiguration.psm1内的框架代码,除非PSDscAllowPlainTextPassword(在我们的情况下实际上是完全限定与非限定的情况)完全合格的机器名称)。

我确实偶然发现了一个未记录的解决方法(并非我一定建议使用它)-实际上,可以使用以下注册表项关闭对纯文本凭据的检查:

$machineName = localhost

希望这可以节省其他人的头疼!