标题说明了一切。我已经通过 regedit 启用了日志记录,但我想要更稳定的东西。我希望看到在 powershell 上执行的每个命令都出现在我的事件日志中,就像 Sysmon 一样。
答案1
是否可以记录在我的计算机上执行的 PowerShell 脚本?
是的。
Windows PowerShell 创建一个名为“Windows PowerShell”的 Windows 事件日志来记录 Windows PowerShell 事件。您可以在事件查看器中或使用获取事件的 cmdlet(例如 cmdlet)查看此日志
Get-EventLog
。默认情况下,Windows PowerShell 引擎和提供程序事件记录在事件日志中,但您可以使用事件日志首选项变量来自定义事件日志。例如,您可以添加有关 Windows PowerShell 命令的事件。
来源关于事件日志- PowerShell | Microsoft Docs
PowerShell 记录有关 PowerShell 操作的详细信息,例如启动和停止引擎和提供程序以及执行 PowerShell 命令。
您需要注册 PowerShell 事件提供程序:
从提升的 PowerShell 提示符运行以下命令。PowerShell
$PSHOME\RegisterManifest.ps1
并启用脚本块日志记录:
启用脚本块日志记录后,PowerShell 会记录其处理的所有脚本块的内容。启用后,任何新的 PowerShell 会话都会记录此信息。
运行以下函数:
function Enable-PSScriptBlockLogging { $basePath = 'HKLM:\Software\Policies\Microsoft\Windows' + '\PowerShell\ScriptBlockLogging' if(-not (Test-Path $basePath)) { $null = New-Item $basePath -Force } Set-ItemProperty $basePath -Name EnableScriptBlockLogging -Value "1" }
答案2
David 在这里说得很对,但是还有其他几个日志记录功能,所有都可以通过您计算机上的 GPO/LPO 进行设置。
通过管理模板 -> Windows 组件 -> Windows PowerShell 中的打开 PowerShell 脚本块日志记录组策略设置启用日志记录。