如何设置ExecutionPolicy:拒绝访问registry项

我以pipe理员身份运行Windows Server 2008,并试图将ExecutionPolicy设置为Remotesigned for PowerShell v2,如下所示:

Set-ExecutionPolicy RemoteSigned 

但是我得到这个错误:

 Set-ExecutionPolicy : Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft .PowerShell' is denied. At line:1 char:20 + Set-ExecutionPolicy <<<< RemoteSigned + CategoryInfo : NotSpecified: (:) [Set-ExecutionPolicy], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetExecutionPolicyComma nd 

如何解决这个问题?

右键单击Powershell快捷方式,然后select“以pipe理员身份运行”

斯蒂芬·詹宁斯在StackOverflow上回答同样的问题 :

 Set-ExecutionPolicy Unrestricted -Scope CurrentUser 

这将为当前用户(存储在HKEY_CURRENT_USER)而不是本地计算机(HKEY_LOCAL_MACHINE)设置执行策略。

如果“以pipe理员身份运行”不适用于您(一开始不适用于我),或者如果您想要一个永久的解决scheme,我发现通过直接添加到Windowsregistry的权限修复。 当我调用get-ExecutionPolicy时,不再受限制。

它相当于set-ExecutionPolicy RemoteSigned,它实际上工作。

写在这里: http : //kyleclegg.com/powershell/

希望这可以帮助。

我发现唯一解决这个错误的方法是运行regedt32并向下追溯到密钥,然后将用户的权限从读取更改为完全控制。 服务器上的本地权限优先于域pipe理员权限。