6

我有一个由我编写的 PowerShell 脚本。我尝试如下运行 PowerShell 脚本;

PS C:\Documents and Settings\Administrator>c:\test\Test.ps1

所以这给了我一个错误说:

无法加载文件 c:\test\Test.ps1,因为此系统上禁用了脚本的执行。有关更多详细信息,请参阅“get-help about_signing”。

我发现该设置Set-ExecutionPolicy Unrestricted将修复错误。

但我的问题是;

  1. 这次签约是为了什么?
  2. Set-ExecutionPolicy Unrestricted我们可以在不设置(做签名之类的事情)的情况下修复这个错误吗?如果是这样,该怎么做?
  3. Set-ExecutionPolicy Unrestricted如果我在我的网络服务器中设置会出现安全问题吗?
4

2 回答 2

6

Set-ExecutionPolicy导致系统范围的变化。脚本是可能存在的安全漏洞,这就是默认禁用所有脚本执行的原因。一种可能性是使用仅对该特定会话有效的执行策略从命令行启动 PowerShell 进程。命令行将类似于:

> powershell.exe -ExecutionPolicy Unrestricted -File "c:\test\Test.ps1"

您可以将此与签名相结合,方法是将默认策略保留为 Restricted,并在需要时使用 RemoteSigned 或 AllSigned 策略启动 PowerShell。有关 powershell.exe 命令行选项的一些附加信息在这里

于 2013-07-18T04:16:18.287 回答
3

如果您按照说明执行的操作,您将获得一个帮助页面,该页面会准确告诉您需要做什么。

get-help about_signing

综上所述,计算机无法判断编写脚本的人是一个值得信赖的人,因此默认情况下它不会运行任何不值得信赖的脚本。解决此问题的两种方法是允许来自未知来源的脚本Set-ExecutionPolicy Unrestricted使用.

要签署您自己的代码,您将需要一个代码签名证书。阅读该about_signing帮助,其中有一个部分CREATE A SELF-SIGNED CERTIFICATE会告诉您如何操作。

获得证书后,您需要签署脚本。如果您再次查看相同的帮助,则会有一个名为的部分SIGN A SCRIPT告诉您如何执行此操作。

于 2013-07-18T03:51:21.903 回答