You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行Get-EventLog时无法查看CommandLine属性的问题

处理PowerShell查询Security日志4688事件时CommandLine字段为空/显示"C"的问题

问题重现

执行以下PowerShell命令远程查询目标机器GLOWING-GALAXY的安全日志:

Get-Eventlog -LogName Security -ComputerName GLOWING-GALAXY -InstanceId 4688 -Newest 3 | Select-Object CommandLine

返回结果中CommandLine字段为空;以同一管理员身份在目标机器本地执行相同命令时,CommandLine仅显示为"C"。

核心原因及解决办法

1. 审计策略未开启进程创建的命令行记录

这是最常见的原因:默认Windows的进程创建审计仅记录进程基本信息,不会捕获命令行参数。需手动开启详细审计:

  • 打开本地组策略编辑器(gpedit.msc),定位到:
    计算机配置 > Windows设置 > 安全设置 > 高级审核策略配置 > 系统审核策略 > 详细跟踪
  • 找到审核进程创建,双击打开,勾选"成功"(需记录失败事件可同时勾选)。
  • 点击"配置"按钮,在"审核选项"标签下勾选**"包含命令行"**,确定保存。
  • 执行gpupdate /force刷新组策略,之后新产生的4688事件会完整记录命令行内容。

2. 改用Get-WinEvent替代旧版Get-Eventlog

Get-Eventlog是PowerShell旧版cmdlet,对事件属性的解析存在局限性,建议用Get-WinEvent直接提取事件原始属性:

# 远程查询并提取命令行
Get-WinEvent -LogName Security -ComputerName GLOWING-GALAXY -FilterXPath "*[System[EventID=4688]]" -MaxEvents 3 | ForEach-Object {
    [PSCustomObject]@{
        TimeCreated = $_.TimeCreated
        CommandLine = $_.Properties[8].Value
    }
}

注:4688事件的属性索引8对应命令行字段,可根据需求调整提取的属性内容。

3. 排查UAC远程限制(针对远程查询为空的情况)

若远程查询仍为空,检查目标机器的UAC远程设置:

  • 打开注册表编辑器(regedit),定位到HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  • 找到LocalAccountTokenFilterPolicy,设置值为1(不存在则新建DWORD值)
  • 重启目标机器后重试远程查询,该设置可让本地管理员远程访问时获得完整权限。

内容的提问来源于stack exchange,提问作者Ayo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 22:30:03