所以我写了一个小型 VB 程序,它运行一个 powershell 脚本。我知道我的 ExecutionPolicy 必须设置为 RemoteSigned 或 Unrestricted 才能在我的计算机上执行脚本。所以我这样做了,但它一直说
... cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at .. bla bla
通常这个问题可以通过更改 ExecutionPolicy 来解决,但这次不行。可能是因为我从 EXE 中调用 powershell?我不知道。
有什么建议吗?
答案1
好吧,经过无数次尝试后,我意外地找到了解决方案。或者,我最好说......它对我有用。
我使用管理员权限从根目录启动了 powershell.exe。之后我手动加载了 PSReadLine 模块并再次设置了 ExecutionPolicy RemoteSigned
。
完成这些步骤后,一切都按预期运行。说实话,我现在看不出以管理员权限从开始菜单打开 powershell 和以管理员权限从根目录打开 powershell 有什么区别。但它确实有区别。很有趣。
答案2
尝试按如下方式运行:
powershell.exe -ExecutionPolicy Bypass yourScript.ps1
解释:
来自文档:
-执行策略
指定新的执行策略。此参数可接受的值为:
- 受限。不加载配置文件或运行脚本。受限是默认执行策略。
- AllSigned。要求所有脚本和配置文件都由受信任的发布者签名,包括您在本地计算机上编写的脚本。
- RemoteSigned。要求从 Internet 下载的所有脚本和配置文件均由受信任的发布者签名。
- 不受限制。加载所有配置文件并运行所有脚本。如果您运行从 Internet 下载的未签名脚本,系统会在运行前提示您授予权限。
- 绕过。没有任何阻止,也没有任何警告或提示。
- 未定义。从当前范围中删除当前分配的执行策略。此参数不会删除在组策略范围中设置的执行策略。