在Windows 7中使用Powershell创建代码签名证书的问题

时间:2011-11-05 20:19:18

标签: powershell certificate powershell-v2.0

在Powershell中以低限制(或短暂的时间没有)编写脚本后,我决定一起行动并开始做所有事情Set-ExecutionPolicy AllSigned。在浏览Hanselman's old post之后,我甚至无法签署我的个人资料.ps1。

快速测试显示:Get-ChildItem证书:\ CurrentUser \ My -codesign始终返回null。我打开了certmgr,我可以看到所有证书,但我不确定为什么我不能签署任何本地证书。运行这个:

Set-AuthenticodeSignature "C:\users\[MY USER ACCOUNT]\Documents\WindowsPowerShell\profile.ps1" @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]

将永远返回:

  

Set-AuthenticodeSignature:无法将参数绑定到参数   '证书'因为它是空的

我在管理员帐户中使用的是Windows 7旗舰版,并且我作为管理员在PS或CMD中执行了所有操作。我现在几乎只是在讨论PowerShell这种方式,但我希望我不会错过一些非常简单的东西。

1 个答案:

答案 0 :(得分:1)

我想我已经弄明白了。在这种情况下,我不确定这种最佳做法是否合适,但我厌倦了在我的桌子上敲打头。

1。)所以,我看了这个MS Support Article,我注意到SYSTEM用户应该可以完全控制... \ Crypto \ RSA \ MachineKeys目录,而我的系统没有列出SYSTEM所有。所以,我在那里更改了权限(这也可以使用SO Question #11887)。

2。)删除我之前创建的证书并重新创建它们。

3。)打开certmgr,找到证书,去道具,并设定具体目的。

现在Get-ChildItem cert:\CurrentUser\My -codesigning会返回指纹,我可以签署脚本。

我不确定为什么我的安装是这样的或者这有多么不寻常,但我以前从未触及过MachineKey目录。但它现在似乎有效。