我正在尝试想出一种方法来推送证书以在多台机器上安装。我想出的方法是:
Invoke-Command ServerName {Import-Certificate -FilePath "path" `
CertStoreLocation Cert:\LocalMachine\Root}
我得到:
Access is denied. 0x80070005 (WIN32: 5 ERROR_ACCESS_DENIED)
+ CategoryInfo : NotSpecified (:) [Import-Certificate], Exception
+ FullyQualifiedErrorID : System.Exception,Microsoft.CertificationServices.Commands.ImportCertificateCommand
+ PSComputerName : ServerName
我以管理员身份运行本地 PowerShell,并且我的帐户是目标计算机上的管理员。并且我已验证我可以安装证书。
编辑:如果我登录到目标机器并运行 {} 中的代码,它会正常工作,但前提是我以管理员身份运行。因此,当我在机器上以管理员身份启动时,它似乎没有将其转换到目标上。
答案1
你遇到的问题是第二跳使用 PowerShell 远程处理传递凭据。请参阅下面我链接的文章中的摘录。
第一个跳转是从您的客户端到 ServerA。第二个跳转是从 ServerA 到您尝试连接的另一台计算机。出现问题的原因是您的凭据无法再次委托。
这实际上是一个安全功能,旨在防止您的凭证在您不知情的情况下被传递。因此您的第二跳操作失败,因为 ServerA 无法在传输过程中发送任何凭证。
有一些方法可以解决这个问题,即首先将证书文件本地复制到您要导入的服务器,您已经声明这种方法没有问题。
你也可以使用 CredSSP 进行第二跳远程连接。