我有一个由我编写的PowerShell脚本。我尝试运行PowerShell脚本,如下所示;
PS C:\Documents and Settings\Administrator>c:\test\Test.ps1
所以这给我一个错误说:
无法加载文件c:\ test \ Test.ps1,因为在此系统上禁用了脚本的执行。有关详细信息,请参阅“get-help about_signing”。
我发现设置Set-ExecutionPolicy Unrestricted
将解决错误。
但我的问题是;
Set-ExecutionPolicy Unrestricted
的情况下修复此错误(做签名的事情)吗?如果是的话,怎么做?Set-ExecutionPolicy Unrestricted
,是否会出现安全问题?答案 0 :(得分:6)
Set-ExecutionPolicy
导致系统范围的变化。脚本是可能的安全漏洞,这就是默认情况下禁用所有脚本执行的原因。一种可能性是从命令行启动PowerShell进程,其执行策略仅对该特定会话有效。命令行类似于:
> powershell.exe -ExecutionPolicy Unrestricted -File "c:\test\Test.ps1"
您可以将此与签名结合使用,将默认策略保留为Restricted,并在需要时使用RemoteSigned或AllSigned策略启动PowerShell。有关powershell.exe命令行选项的一些其他信息是here。
答案 1 :(得分:3)
如果你按照说明告诉你的那样做了,你就会得到一个帮助页面,告诉你你到底需要做什么。
get-help about_signing
总之,计算机无法判断编写脚本的人是否值得信赖,因此默认情况下它不会运行任何不值得信任的脚本。解决此问题的两种方法是允许来自未知来源的脚本(您通过使用Set-ExecutionPolicy Unrestricted
找到的解决方案)或“signing”脚本证明它来自可信赖的来源且尚未篡改了集会,你从那个来源获得了它。
要签署自己的代码,您需要一个代码签名证书。阅读about_signing
帮助,有一个名为CREATE A SELF-SIGNED CERTIFICATE
的部分,告诉您如何操作。
获得证书后,您需要签署脚本。如果您再次检查相同的帮助,则会有一个名为SIGN A SCRIPT
的部分,告诉您如何执行此操作。