该命令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 主机,因为 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