使用PowerShell在远程服务器上安装pfx证书

时间:2015-03-06 13:03:51

标签: powershell certificate install pfx

通过以下方式, Install certificate with PowerShell on remote server

我尝试使用以下Powershell命令在远程服务器上安装pfx证书,

Invoke-command -ComputerName myservername -scriptblock { Import-PfxCertificate –FilePath D:\pfxcert.pfx cert:\localMachine\my -Password (ConvertTo-SecureString -String "mypassword" -Force –AsPlainText) }

这给我以下错误消息...

The term 'Import-PfxCertificate' is not recognized as the name of a cmdlet, function, script file, or operable
program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
+ CategoryInfo          : ObjectNotFound: (Import-PfxCertificate:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
+ PSComputerName        : myservername

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:2)

Cmdlet Import-PfxCertificate是模块PKIClient的一部分。

Windows PowerShell中的PKI客户端Cmdlet仅在

上可用
  • Windows 8.1
  • Windows PowerShell 4.0
  • Windows Server 2012 R2

尝试在脚本中加载PKI客户端:

Invoke-command -ComputerName myservername -scriptblock 
{ 
    Get-Command -Module PKIClient; 
    Import-PfxCertificate –FilePath D:\pfxcert.pfx cert:\localMachine\my -Password (ConvertTo-SecureString -String "mypassword" -Force –AsPlainText) 
}

您可以尝试Get-Command -Module PKIClient查看所有cmdlet。

答案 1 :(得分:1)

目标计算机上不存在Import-PfxCertificate cmdlet。可能是因为它运行的Powershell版本少于3个。

如果可能,您必须安装较新版本的PowerShell,或者找到导入证书的其他方法。

答案 2 :(得分:0)

好吧,如果你需要从C#调用它,那么从C#安装它可能是值得的,比如

using System.Security.Cryptography.X509Certificates;
X509Certificate2 certificate = new X509Certificate2("C:\TEMP\yourcerthere.pfx", "yourpasswordhere");
X509Store store = new X509Store(StoreName.TrustedPublisher, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
store.Add(certificate);
store.Close();

实际上它与powershell中的代码大致相同,因为除了使用.net系统类或某些工具(如this)之外别无他法。