在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这种方式,但我希望我不会错过一些非常简单的东西。
答案 0 :(得分:1)
我想我已经弄明白了。在这种情况下,我不确定这种最佳做法是否合适,但我厌倦了在我的桌子上敲打头。
1。)所以,我看了这个MS Support Article,我注意到SYSTEM用户应该可以完全控制... \ Crypto \ RSA \ MachineKeys目录,而我的系统没有列出SYSTEM所有。所以,我在那里更改了权限(这也可以使用SO Question #11887)。
2。)删除我之前创建的证书并重新创建它们。
3。)打开certmgr,找到证书,去道具,并设定具体目的。
现在Get-ChildItem cert:\CurrentUser\My -codesigning
会返回指纹,我可以签署脚本。
我不确定为什么我的安装是这样的或者这有多么不寻常,但我以前从未触及过MachineKey目录。但它现在似乎有效。