我正在尝试将 powershell DSC 用于一些事情。我想根据http://technet.microsoft.com/en-us/library/dn781430.aspx上的说明对传递的凭据进行加密,直到我在目标节点上运行 start-DscConfiguration 并得到错误:
无法获取私钥。+ CategoryInfo : NotSpecified: (root/Microsoft/...gurationManager:String) [], CimException + FullyQualifiedErrorId : MI RESULT 1 + PSComputerName : DmitriyDev
回过头来,我检查了 mof 是否包含加密的凭据,而 meta.mof 包含匹配的指纹等。
回到原始文章,我看到了示例代码:
# Get the certificate that works for encryption function Get-LocalEncryptionCertificateThumbprint { (dir Cert:\LocalMachine\my) | %{ # Verify the certificate is for Encryption and valid if ($_.PrivateKey.KeyExchangeAlgorithm -and $_.Verify()) { return $_.Thumbprint } } }
当我使用此代码(在目标节点上)测试我的证书时,我看到证书的 PrivateKey 为空。我不确定证书如何为空。使用 certutil 和提到的技术尝试一些事情http://blogs.technet.com/b/vishalagarwal/archive/2010/03/30/verifying-the-private-key-property-for-a-certificate-in- the-store.aspx似乎我确实有一个私钥,但是 Powershell 仅将其视为 null。
在目标节点上,我什至手动导出了公共私钥并重新导入它们,没有另一个 dsc 教程中概述的运气。
我还尝试使用 procmon 来查看目标节点上的问题。我看到 wmiprvse 进程并看到它作为系统运行(如预期的那样),并且我检查以确保系统允许私钥的权限(全部在目标节点上)
所以我的问题是如何让我的私钥供 DSC 使用,特别是目标节点上的 LCM?或者我如何更多地诊断问题?