修复PowerShell错误的替代方法"在此系统上禁用脚本的执行"

New*_*per 6 powershell

我有一个由我编写的PowerShell脚本.我尝试运行PowerShell脚本,如下所示;

PS C:\Documents and Settings\Administrator>c:\test\Test.ps1
Run Code Online (Sandbox Code Playgroud)

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

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

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

但我的问题是;

  1. 签约是关于什么的?
  2. 我们可以在没有设置的情况下修复此错误Set-ExecutionPolicy Unrestricted(做签名的事情)吗?如果是这样,怎么办?
  3. 如果我Set-ExecutionPolicy Unrestricted在我的网络服务器中设置,是否会出现安全问题?

Mik*_*ray 6

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

> powershell.exe -ExecutionPolicy Unrestricted -File "c:\test\Test.ps1"
Run Code Online (Sandbox Code Playgroud)

您可以将此与签名结合使用,将默认策略保留为Restricted,并在需要时使用RemoteSigned或AllSigned策略启动PowerShell.有关powershell.exe命令行选项的一些其他信息,请参见此处.

  • 用户也可以使用** - Scope CurrentUser**限制Set-ExecutionPolicy,现在本地用户不需要重做更改.无论如何,你完美地证明了默认执行策略没有做任何有意义的事情.您可以轻松地将所有powershell放入批处理文件中,然后始终执行,它与运行ps1文件一样好.所以这个默认策略真的没有用,它只是愚蠢的,如果它实际上会阻止攻击,那么肯定是好的设置,但事实并非如此.它的突然出现了令人讨厌的愚蠢. (2认同)