在 Powershell 中,如何为另一个非管理员用户(作为管理员)设置执行策略?

在 Powershell 中,如何为另一个非管理员用户(作为管理员)设置执行策略?

该命令Set-ExecutionPolicy有一个参数-Scope,该参数只有5类:

  MachinePolicy       
  UserPolicy       
  Process       
  CurrentUser    
  LocalMachine

似乎没有办法指定用户。

作为管理员,如何为其他用户设置执行策略?

有一个类似的问题,但是也尚未解决。 为服务帐户设置 PowerShell 执行策略

请注意,可能有一种方法可以在注册表中为另一个用户创建组策略对象,但我仍在对此进行实验。

答案1

在机器级别设置的 ExecutionPolicy 对在其他级别设置的 EP 没有影响,因此策略不同。在任何其他级别设置的 ExecutionPolicy 对机器 EP 没有影响。EP 是 1:1 的东西,它们都是相互独立的。

我整天都在为我的团队和特定人员做这件事,我也向我支持的其他客户展示了如何做到这一点。我的强制 GPO 已将 EP 设置为在机器级别受限制,但针对目标用户帐户设置了 RemoteSigned,而这些是在 RemoteSigned 的用户或进程级别设置的。

机器级 GPO 是 1:1 的东西。用户 EP 是通过推送到目标用户机器的快捷方式设置的。它有一个分配的热键快捷方式,并固定在任务栏的第 6 个位置。如果用户启动正常的 PowerShell 快捷方式,则正在运行的脚本会被阻止。使用自定义的用户快捷方式,则不会。

EP 不会以任何方式阻止用户运行 PowerShell 代码。在 ISE/VSCode 等中打开任何 PS 代码,选择全部并点击运行,它将按预期工作。EP 可防止用户意外运行脚本。MS 从未说过 EP 是安全边界/控制器,值得注意的是,他们明确表示它不是。

实际上有几十种方法可以绕过 EP 设置。网络上到处都是指南,甚至来自微软

绕过 PowerShell 执行策略的 15 种方法

绕过 PowerShell 执行策略

人们可以编写自己的 Powershell 主机,因为 powershell.exe/pwsh.exe/powershell_ise.exe 不是 PowerShell,它们只是运行 PowerShell 代码的 PowerShell 主机。

网络上存在大量这样的替代主机。

MSDN 有一个部分致力于编写 PowerShell 主机PowerShell SDK 文档,这是一个很好的起点。

有关自定义主机的其他文章:

http://powershellstation.com/2009/10/12/writing-your-own-powershell-hosting-app-part-1-introduction

http://dougfinke.com/blog/index.php/2009/09/02/how-to-host-powershell-in-a-wpf-application/

http://powershellstation.com/2009/10/12/writing-your-own-powershell-hosting-app-part-1-introduction

http://code.google.com/p/farnet/wiki/PowerShellFar

http://poshconsole.codeplex.com

http://studioshell.codeplex.com

相关内容