Powershell 处于所需状态配置的凭据

Powershell 处于所需状态配置的凭据,powershell,dsc,Powershell,Dsc,我有以下所需的状态配置(DSC) } 当我尝试执行此操作时,会出现以下错误: ConvertTo MOFInstance:System.InvalidOperationException处理类型为“xPfxImport”的属性“Credential”时出错: 不建议将加密密码转换为纯文本并存储为纯文本。有关在中保护凭据的详细信息,请参阅 MOF文件,请参阅MSDN博客: 在C:\Users\x\Desktop\script.ps1:18 char:9 +xPfxImport 第341行字符:16

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

}

当我尝试执行此操作时,会出现以下错误:

ConvertTo MOFInstance:System.InvalidOperationException处理类型为“xPfxImport”的属性“Credential”时出错: 不建议将加密密码转换为纯文本并存储为纯文本。有关在中保护凭据的详细信息,请参阅 MOF文件,请参阅MSDN博客: 在C:\Users\x\Desktop\script.ps1:18 char:9 +xPfxImport 第341行字符:16 +$aliasId=ConvertTo-MOFInstance$keywordName$canonicalizedValue + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +CategoryInfo:InvalidOperation:(:)[写入错误],InvalidOperationException +FullyQualifiedErrorId:FailToProcessProperty,ConvertTo-MOFInstance 处理配置“证书”时发生编译错误。请查看错误流中报告的错误,然后重试 适当地修改配置代码。 位于C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\PSDesiredStateConfiguration.psm1:3917 字符:5 +抛出$ErrorRecord + ~~~~~~~~~~~~~~~~~~ +CategoryInfo:InvalidOperation:(证书:字符串)[],InvalidOperationException +FullyQualifiedErrorId:FailToProcessConfiguration

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


我正在寻找一种方法来安装证书并在此之后授予某些设置证书权限。

您需要允许使用
明文凭据()


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

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

通过挑选
PSDesiredStateConfiguration.psm1
中的框架代码,除非
$machineName=localhost
,否则将看不到
PSDscAllowPlainTextPassword
标志(在我们的例子中,实际上是完全限定的机器名与非完全限定的机器名)

我还偶然发现了一个未记录的解决方法(我并不推荐使用它)——实际上可以使用以下注册表项关闭对明文凭据的检查:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\DSC]
"PSDscAllowPlainTextPassword"="True"
"PSDscAllowDomainUser"="True"

希望这能帮别人省去一些麻烦

这是我第一次尝试。我还是会犯同样的错误。很明显,你没有正确地尝试,这就是它的工作原理,你确定你确实这样做了吗:
DomainCredentialExample-DomainCredential$cred-ConfigurationData$cd
我知道这超出了这个问题的范围,但是你知道如何为
网络服务
用户=>授予该证书的读取权限吗从未尝试过这样做,但类似这样的内容可能会有所帮助,实际上这是在一个新行上,我在StackOverflow的格式方面有问题可能不是=>术语“PSDscAllowPlainTextPassword”不被识别为cmdlet的名称尝试此
$cd
(检查更新的答案)或更改为nodename以反映您的nodename
MyPC
谢谢。最后一句话使我想到了真正的问题。我没有意识到节点名称实际上是导致问题的原因。请将
node localhost
第(8)行更改为
node$AllNodes.NodeName
NodeName=“*”
返回到
NodeName=“localhost”
$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
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
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\DSC]
"PSDscAllowPlainTextPassword"="True"
"PSDscAllowDomainUser"="True"