这是我在 powershell 中运行的命令
gwmi win32_process |select ProcessID,ParentProcessID,CommandLine,@{e={$_.GetOwner().User}}
以下是输出的部分列表
ProcessID ParentProcessID CommandLine $_.GetOwner().User
--------- --------------- ----------- ------------------
0 0
4 0
236 4 SYSTEM
332 320 SYSTEM
384 320 wininit.exe SYSTEM
392 376 SYSTEM
420 376 winlogon.exe SYSTEM
476 384 SYSTEM
484 384 C:\Windows\system32\lsass.exe SYSTEM
544 476 C:\Windows\system32\svchost.exe -... SYSTEM
我想知道如何获取完整的命令行?(未如上所示截断)
我需要捕获输出以便在sensu
插件中进行处理,该插件本质上是一个 ruby 脚本
答案1
这只是格式问题。完整的命令行在对象中,但对象在转换为字符串进行打印时的格式(默认格式使用“ft”)会缩短行数。如果您使用列表格式化程序进行不同的格式化,则可以获得较长格式的完整数据:
.. your command ... | fl
如果您想在脚本中使用结果,则不需要关心格式,只需从管道中的对象中获取属性.CommandLine(然后您也可以跳过“选择”命令)。
为了将文本转换为 Ruby 脚本,您只需明确生成带有空格分隔字段的文本字符串:
gwmi win32_process | % { "$($_.ProcessID) $($_.ParentProcessID) $($_.GetOwner().User) $($_.CommandLine)" }
要使用默认的“表格”格式化程序包装列,请使用:
... | ft -wrap
我不知道如何让它显示长行,我认为通过为这个对象类定义自定义格式视图是可行的,但我自己从来没有这样做过。