Powershell 处于所需状态配置的凭据
我有以下所需的状态配置(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 我意识到密码必须加密,不允许或至少不建议将其保存为普通密码。我在网上尝试了很多建议,但我仍然无法使其正常工作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
我正在寻找一种方法来安装证书并在此之后授予某些设置证书权限。您需要允许使用
明文凭据()
我发现自己也面临着同样的问题,我只是想重复一下问题的实际原因(这实际上隐藏在评论中):
最后一句话使我想到了真正的问题。我没有意识到节点名称实际上是导致问题的原因。请将节点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以反映您的nodenameMyPC
谢谢。最后一句话使我想到了真正的问题。我没有意识到节点名称实际上是导致问题的原因。请将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"