如何审计设置PSExecutionPolicyPreference的事件?

如何审计设置PSExecutionPolicyPreference的事件?

主要问题是我们执行 PowerShell 脚本,其中一台机器在执行过程中出于未知原因更改了执行策略。目标是弄清楚这种更改发生的时间和原因。

背景:我们有一个 CI 管道,用于准备虚拟机,然后运行软件测试套件。测试套件本身执行的预处理步骤之一设置了 PowerShell 执行策略,

Set-ExecutionPolicy -ExecutionPolicy Unrestricted

这在本地有效,但是当触发 CI 时,我们在其中一台机器上收到错误:

Windows PowerShell updated your execution policy successfully, but the setting is overridden by a policy defined at a more specific scope.
Due to the override, your shell will retain its current effective execution policy of RemoteSigned.

原因是出于RemoteSigned某种原因,该策略是在进程级别定义的(通过在执行步骤之前直接输出Get-ExecutionPolicy -List 和来确认)。此策略仍然与本地 PowerShell 执行兼容,因此不会影响测试套件,但是,我们希望测试无论在什么机器上都能统一运行。因此,我想弄清楚是什么设置了和何时设置。$env:PSExecutionPolicyPreferenceSet-ExecutionPolicyPSExecutionPolicyPreference

测试套件本身不设置策略,因为这样在其他机器上也会发生这种情况。而且我在 CI 管道中找不到任何设置策略的内容。

有一篇文章解释了如何审计环境变量的改变但它适用于存储在注册表中但未存储 PSExecutionPolicyPreference 的变量(请参阅Microsoft 有关执行策略的文档)。

那么,有没有办法确定设置PSExecutionPolicyReference的时间和进程?

相关内容