如何从 powershell 获取完整命令和父进程 id?

如何从 powershell 获取完整命令和父进程 id?

这是我在 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

我不知道如何让它显示长行,我认为通过为这个对象类定义自定义格式视图是可行的,但我自己从来没有这样做过。

相关内容