我正在尝试使用PowerShell和脚本签名。我已经创建了一个示例脚本。
Write-Host "hello, world"
我进一步创建了一个自签名证书,并将其(作为管理员)安装到受信任的证书存储“TrustedPeople”。然后我激活了执行政策
Set-ExecutionPolicy -scope process AllSigned
之后,脚本无法再执行。这是预期的。所以我签了剧本:
Set-AuthenticodeSignature -FilePath .\hello.ps1 $cert
变量$cert
仍包含自签名证书。之后,当我启动脚本时,我收到了这条消息:
您是否要从此不受信任的发布商处运行软件?
文件C:\ temp \ hello.ps1由CN = Ich发布,在您的系统上不受信任。仅运行受信任发布者的脚本。
[V]从不运行[D]不运行[R]运行一次[A]始终运行[?]帮助(默认为“D”):
由于PowerShell的本地化不好,我选择了错误的答案[E]:
[E] Nochnieususgeführt[N]Nichtususführen[M]Einmalausführen[A]Immerausführen
在那种状态下我不能再执行脚本了。删除和重新安装证书没有帮助。如何在此错误之前恢复状态?
编辑:在我试验期间,我可以删除证书并创建一个新证书。但是,如果我分发了脚本和证书,并且这个错误发生在另一台PC上会发生什么?在这种情况下,清除证书不是一种选择。因此我实际上恢复了证书。
答案 0 :(得分:0)
我认为您的证书已自动添加到不受信任的证书中。尝试从不受信任的证书存储中删除您的证书,然后将您的证书添加到系统上的受信任列表中以运行脚本而不会收到提示。
请参阅How to trust a certificate in Windows Powershell。
<强>更新强>
我可以在我的机器上重现这个问题。选择[V] Never run
后,我再也无法执行脚本了。原因是,我的有效证书已添加到我的用户帐户的不受信任的证书中。我可以通过以下方式解决我的问题。
Ctrl
+ m
Certificates
Add >
My user account
Untrusted Certificates