是否可以记录在我的计算机上执行的 powershell 脚本?

是否可以记录在我的计算机上执行的 powershell 脚本?

标题说明了一切。我已经通过 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"
}

来源记录Windows - PowerShell | Microsoft Docs

答案2

David 在这里说得很对,但是还有其他几个日志记录功能,所有都可以通过您计算机上的 GPO/LPO 进行设置。

脚本跟踪和日志记录

通过管理模板 -> Windows 组件 -> Windows PowerShell 中的打开 PowerShell 脚本块日志记录组策略设置启用日志记录。

在此处输入图片描述

相关内容