我有以下所需状态配置(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
我意识到密码必须加密并保存为普通密码是不允许的,或者至少不建议使用密码。我在互联网上尝试了许多建议但我仍然无法使其正常工作。
我正在寻找一种安装证书的方法,并在此之后提供某些设置的证书权限。
答案 0 :(得分:1)
您需要允许plaintextcredentials
(link)
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
希望这可以节省其他人的头疼!