PowerShell: 执行策略

5

过去几个月以来,我一直在这样运行我的代码 -

Set-ExecutionPolicy Unrestricted

但是,一些奇怪的事情正在发生,我总是得到这个错误 -

Windows PowerShell 已成功更新您的执行策略,但该设置被在更具体的范围内定义的策略覆盖。由于覆盖,您的 shell 将保留其当前有效的执行策略为“无限制”。键入“Get-ExecutionPolicy -List”查看执行策略设置。有关更多信息,请参见“Get-Help Set-ExecutionPolicy”。

我已经参考了这些链接但没有成功 -

Get-ExecutionPolicy -List

MachinePolicy                                                           
UserPolicy                                                           
Process                                                        
CurrentUser                                                        
LocalMachine

Get-ExecutionPolicy -List 的输出应该显示每个范围的执行策略。 - Keith Hill
它显示LocalMachine的无限制。但是,在此期间,我遇到了上面提到的错误。我不知道为什么。这真的很令人沮丧! - Angshuman Agarwal
1个回答

1
您应该从 Get-ExecutionPolicy -List 命令中看到类似以下的输出:
        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined 
 LocalMachine    RemoteSigned

一旦您看到具有不良设置的范围,您可以像这样重置它:

Set-ExecutionPolicy Undefined -Scope <scope-name>

这是在假设您有权限这样做的情况下。


但是当我从C#代码执行时,我会遇到错误,而此时我没有任何控制来重置范围? - Angshuman Agarwal
系统管理员能否在组策略级别上永久地做些什么,以至于我至少不必再去触碰基于脚本的代码呢?(Win7-32和64位,Win2k8 R2) - Angshuman Agarwal
哇,你是从自己的主机上运行这个程序的吗?也就是说,你是在自己的C#应用程序中托管PowerShell引擎吗? - Keith Hill
@AngshumanAgarwal请看一下这个SO问题的答案 - https://dev59.com/01LTa4cB1Zd3GeqPZlrk - Keith Hill
谢谢Keith。我没有进行任何自定义托管。我只是在C#中使用Powershell.Create调用Powershell运行时,使用的是这些代码 - http://msdn.microsoft.com/en-us/library/windows/desktop/ee706580(v=vs.85).aspx。 - Angshuman Agarwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接