使用 powershell 自动为 Sn.exe 输入密码

Enter password automatically for Sn.exe using powershell

我试图在每次 Azure Pipeline 运行s 时自动安装 pfx 文件,因为使用交互式进程代理时,文件似乎丢失了密码或无法导入。下面是我试图实现的 powershell 脚本,但收效甚微。我需要自动提供密码:

Set-Location "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools"

Start-Process -FilePath "sn.exe" -ArgumentList "-NoExit","-d","$Container"

Start-Process -FilePath "sn.exe" -ArgumentList "-i $path $Container" -NoNewWindow -Wait

[System.Windows.Forms.SendKeys]::SendWait("$password") 

当我 运行 脚本时,出现以下错误:

Start-Process : This command cannot be run due to the error: The system cannot find the file specified. At C:\PowerShellScript\CertReInstall.ps1:12 char:1 + Start-Process -FilePath "sn.exe" -ArgumentList "-i $path $Container ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

虽然我想使用“Import-PfxCertificate”,但它似乎没有为安装提供容器名称的选项。

如有任何帮助,我们将不胜感激。 谢谢!

经过大量的反复试验,我终于弄清楚了哪条路径有问题。它实际上是在抱怨 -FilePath "sn.exe" 而不是参数列表中的 path 。即使 Set-Location 完成了它的工作,第二个 Start-Process 还是有问题。所以我将行更新如下:

Start-Process -FilePath "sn.exe" -ArgumentList "-i $path $Container" -NoNewWindow -Wait

这使找不到文件的错误消失了。