安装 - 导入 PFX 证书以分离本地帐户的个人存储 - 自动

The*_*ler 4 powershell certificate

我一直在思考自动化执行此任务的方法:

我们为客户部署 Windows Server 2008 R2 映像。我们使用 PowerShell(第 2 版)来部署我们的专有软件,并在发货前对系统进行各种其他更改。此 PowerShell 进程在本地管理员帐户下运行,直到它完成并禁用本地管理员帐户。

现在,对于这个问题 - 我正在尝试将 .PFX 客户端证书安装到 SEPARATE 用户的 CurrentUser\My 证书存储中。我们称该用户为“SQL”。

现在证书正在安装在 LocalMachine\My 证书存储下,但我们的一个开发团队担心该位置并希望复制原始设置。

现在,我知道如何通过在我们的部署脚本中添加重新启动步骤并在“SQL”用户下执行此操作来完成这项工作,但我想避免这种情况,因为似乎必须有一种方法可以这是在另一个帐户下完成的。这是我们现在用来将证书安装到 LocalMachine\My 商店的基本代码。假设 $certPath 是 .pfx 的路径,$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()
}    
Run Code Online (Sandbox Code Playgroud)

Pet*_*orf 5

我为我的服务器做了类似的事情,但我没有使用纯 PowerShell:

psexec.exe -accepteula -u sql -p sqlspassword certutil.exe -p certpassword -importPFX cert.pfx
Run Code Online (Sandbox Code Playgroud)

这只是在指定帐户下运行 certutil 命令,需要下载 psexec.exe