我一直在围绕自动化的方式来执行这个任务:
我们为客户部署Windows Server 2008 R2映像。 我们使用PowerShell(版本2)部署我们的专有软件,并在发货之前对系统进行各种其他更改。 此PowerShell进程在本地pipe理员帐户下运行,直到完成并禁用本地pipe理员帐户。
现在,对于这个问题 – 我试图将一个.PFX客户端证书安装到一个单独用户的CurrentUser \ My证书存储区。 我们称这个用户为“SQL”。
现在,证书已经在LocalMachine \ My证书存储下安装,但我们的开发团队中有一个担心这个职位,并希望复制原始设置。
现在,我知道如何通过在部署脚本中添加一个重新引导步骤来完成这个操作,并在“SQL”用户下执行这个操作,但是我想避免这种情况,因为看起来必须有一种方法来获取这是在另一个帐户下完成的。 以下是我们现在用于将证书安装到LocalMachine \ My商店的基本代码。 假设$ certPath是.pfx的path,$ pfxPass是.pfx的密码。
function Import-PfxCertificate { param([string] $certPath, [string]$pfxPass) $pfx = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $pfx.Import([string]$certPath, [string]$pfxPass, "Exportable,PersistKeySet") $store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My", "LocalMachine") $store.open("MaxAllowed") $store.add($pfx) $store.close() }
我为我的服务器做了类似的事情,但我没有使用纯PowerShell:
psexec.exe -accepteula -u sql -p sqlspassword certutil.exe -p certpassword -importPFX cert.pfx
这只是运行指定帐户下的certutil命令,您需要下载psexec.exe ,
我最终使用启动进程与-Credentials和免费的importpfx.exe工具。 基本上和@Mathias所说的一样,@Peter举了一个例子。
谢谢你们的帮助。 这比过去两天的研究让我相信要容易得多。