禁用 Windows powershell 事件日志记录

Bob*_*b P 5 powershell event-log

我使用 PsExec 在远程计算机上运行 PowerShell 脚本,作为其副作用,“Windows PowerShell”事件日志(在“应用程序和服务日志”下的事件查看器中找到)将我们的所有参数记录到“HostApplication”下的脚本。这是一个问题,因为其中一些参数包含敏感密码。

我尝试将下面列出的首选项变量设置为 false,但在 PowerShell 引擎启动时它仍然会创建日志。据我所知,这是因为 PowerShell 在检查这些首选项变量的值之前就创建了这些日志。

$LogEngineLifeCycleEvent=$false;
$LogEngineHealthEvent=$false;
$LogProviderLifeCycleEvent=$false;
$LogProviderHealthEvent=$false;
Run Code Online (Sandbox Code Playgroud)

我们当前的解决方案结合使用这些首选项变量,并将以下行放在每个 PowerShell 脚本的开头,以确保清除 PowerShell 引擎启动时创建的日志。

Clear-EventLog "Windows PowerShell";
Run Code Online (Sandbox Code Playgroud)

这个解决方案是好的,但我希望它达到这样的程度:我们的密码永远不会保存在日志中,并且日志永远不需要清除。有没有办法禁用 PowerShell 日志记录,以便在 PowerShell 引擎生命周期的任何时刻都不会创建事件?

Ins*_*ane 2

我认为您需要以下本地组策略,特别是第二个:


打开模块日志记录

如果禁用此策略设置,则会禁用所有 Windows PowerShell 模块的执行事件日志记录。为模块禁用此策略设置相当于将模块的 LogPipelineExecutionDetails 属性设置为 False。


打开 PowerShell 块日志记录

此策略设置允许将所有 PowerShell 脚本输入记录到 Microsoft-Windows-PowerShell/Operational事件日志中。如果启用此策略设置,Windows PowerShell 将记录命令、脚本块、函数和脚本的处理 - 无论是交互调用还是通过自动化调用。

如果禁用此策略设置,则会禁用 PowerShell 脚本输入的日志记录。


  1. Win+R
  2. 类型gpedit.msc
  3. Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell

  1. 然后配置上面解释的设置