我想调整服务帐户(即 IIS 用户,更不用说那些新的 SSIS 虚拟帐户)的 PowerShell 执行策略。但是,看起来您只能像这样在系统范围内调整策略
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
或者对于当前用户,像这样
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
我是否看错了地方,可以在注册表中找到它吗,或者它是一个组策略?
正确的做法是什么?
答案1
如帮助文件中所定义。
范围 您可以设置仅在特定范围内有效的执行策略。范围的有效值为 MachinePolicy、UserPolicy、Process、CurrentUser 和 LocalMachine。设置执行策略时,LocalMachine 是默认值。范围值按优先顺序列出。优先的策略在当前会话中有效,即使在较低优先级设置了更严格的策略。
机器政策由组策略为计算机的所有用户设置。
用户策略由计算机当前用户的组策略设置。
过程Process 作用域仅影响当前 PowerShell 会话。执行策略保存在环境变量 $env:PSExecutionPolicyPreference 中,而不是注册表中。关闭 PowerShell 会话时,变量和值将被删除。
当前用户执行策略仅影响当前用户。它存储在 HKEY_CURRENT_USER 注册表子项中。
本地机器执行策略影响当前计算机上的所有用户。它存储在 HKEY_LOCAL_MACHINE 注册表子项中。
但是,包括 ExecutionPolicy 设置的强制执行的域范围 GPO 将优先于您设置的任何内容。
答案2
我更喜欢三种方法,并且在这个 SO 问题中还有其他方法更改 PS 执行策略
建造机器
从 CMD(或 bash)运行
PowerShell -NonInteractive -ExecutionPolicy RemoteSigned -File "X:\Jenkins\path to your file\your file.ps1"
或者
PowerShell -NonInteractive -ExecutionPolicy RemoteSigned -File ".\your file.ps1"
或者
PowerShell -NonInteractive -ExecutionPolicy RemoteSigned "& '.\your file.ps1'"
我认为其他方法也很好但有点脆弱,除非您使用 docker。
使用 Windows 启动功能覆盖域控制器组策略
它使用一组脚本、CMD 和 PowerShell -描述
LocalMachine 策略未启用
在左侧边栏中
本地计算机策略
计算机配置
管理模板
Windows 组件
Windows PowerShell
并双击启用脚本执行