PowerShell bug“;在此系统上禁用脚本的执行;

PowerShell bug“;在此系统上禁用脚本的执行;,powershell,Powershell,我有一个powershell脚本,运行该脚本可以停止服务,“停止/终止进程”,删除2个文件,然后重新启动 我可以在我的Windows 10 64位主机上完美地运行此脚本-没有任何问题。 我尝试在我的虚拟机中运行它,但我得到了错误 无法加载,因为在此系统上禁用了运行脚本。有关详细信息,请参阅https://go.microsoft.com/fwlink/?LinkID=135170上的“关于执行”策略 所以,为了好玩,我去看了我的组策略,它们在两台机器上都没有配置 管理模板>Windows组件>W

我有一个powershell脚本,运行该脚本可以停止服务,“停止/终止进程”,删除2个文件,然后重新启动

我可以在我的Windows 10 64位主机上完美地运行此脚本-没有任何问题。 我尝试在我的虚拟机中运行它,但我得到了错误

无法加载,因为在此系统上禁用了运行脚本。有关详细信息,请参阅https://go.microsoft.com/fwlink/?LinkID=135170上的“关于执行”策略

所以,为了好玩,我去看了我的组策略,它们在两台机器上都没有配置

管理模板>Windows组件>Windows PowerShell 未配置

那么,为什么问题出现在虚拟机上而不是我的主机上

编辑 在VM上运行Get ExecutionPolicy并同时获取ExecutionPolicy列表 受限的

MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine       Undefined
在我的主机上运行

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    Unrestricted


我不知道我的本地机器是如何改变的-软件安装???

我将在这里孤注一掷,只是重新安装一部分

Windows客户端操作系统的默认执行策略受到限制。这意味着脚本不会自动运行。如果您的虚拟机有Windows客户端操作系统,并且您从未更改过执行策略,那么您的问题是预料之中的。如果一台Windows 10计算机工作正常,则有人更改了执行策略

在有问题的VM上,您需要确定运行脚本的作用域(或帐户)。然后需要相应地设置执行策略

如果您在以自己的身份登录到服务器时正在测试运行脚本,则只需打开PowerShell控制台并运行以下操作:

Set-ExecutionPolicy RemoteSigned
然后在同一控制台中运行脚本

以下命令将列出该计算机上所有作用域的执行策略:

Get-ExecutionPolicy -List
您应该在工作系统和非工作系统上比较上述命令。您的问题可能是运行脚本的特定作用域的执行策略设置。如果你阅读了我文章中的链接,它将帮助你确定你需要具体更改什么

以下内容将允许在VM上执行所有本地脚本,无论它们是否已签名:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

以管理员身份运行Powershell并运行以下命令:
set executionpolicy remotesigned

打开PowerShell并输入以下命令

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

以管理员身份打开powershell,然后粘贴这些命令:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

然后选择一个

我对VS也有同样的问题 代码,然后我在管理员运行时检查cmd。并没有问题,所以最好使用CMD这个简单的方法来解决这个问题

我的电脑也有同样的问题。在管理员模式下打开windows PowerShell ISE,然后运行
设置ExecutionPolicy-ExecutionPolicy RemoteSigned-Scope LocalMachine

此命令解决了我的问题。

以管理员身份运行powershell后

运行以下命令

1.Get-ExecutionPolicy-列表 2.Set-ExecutionPolicy不受限制 3.Set-ExecutionPolicy不受限制-强制


(可能需要重新启动机器)

在其中一个虚拟机上,
get executionpolicy
命令的输出是什么?如果输出不是RemoteSigned、Unrestricted或Bypass,那可能是您的问题。。。运行脚本的帐户在该系统上的执行策略是什么?如回答中所述-
Restricted
是默认的PowerShell执行策略。@AdminOfThings我知道默认值是受限制的。那么,如果两台机器都没有配置,即使根据我的组策略,它为什么会受到限制呢?这两个都是在我拥有的开始-新的笔记本电脑,新的虚拟机(我创建)。。策略和Grp策略中没有更改都表示未配置。今天,get executionpolicy运行时没有给我错误信息——并且说得很准确——一个是受限的,另一个不是。昨天,它刚刚抛出了一个错误,不允许我在机器上运行脚本。我进入了组策略,查看了这两个-都未配置,我已经有了全新的笔记本电脑8个月了-从未接触过策略。我创建的虚拟机当时确实在虚拟机上禁用了UAC,这可能会导致问题。我今天可以运行get execution policy(同一个用户),我不知道昨天为什么会失败并出现上述错误。还有一件事——如果我能够通过脚本执行策略进行攻击,那么该策略的意义是什么?似乎任何黑客都可以键入与我可以键入的相同的绕过代码:似乎更像是一个讨厌的标志,上面写着“请勿进入”,而不是任何有用的东西。仅供参考:虚拟机是我主机的客户机——直接加载到我的主机上——我不是通过这样的服务器登录的作为Vsphere安装。这只是我笔记本电脑上的一个独立虚拟机。你的答案今天在我的虚拟机中有效。我昨天试过了,结果就是不行。这里也一样。它从CMD开始工作。例如,我在VScode终端中遇到了“eslint--int”问题。但是,它从CMD起作用。我也一样。。尝试使用CMD升级。为我工作。