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

Ant*_*ong 3 powershell command-line

这是我在powershell中运行的命令

 gwmi win32_process |select ProcessID,ParentProcessID,CommandLine,@{e={$_.GetOwner().User}}
Run Code Online (Sandbox Code Playgroud)

这是输出的部分列表

                            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 
Run Code Online (Sandbox Code Playgroud)

我想知道如何获得完整的命令行?(未截断如上图所示)

我需要捕获输出以在sensu插件中进行处理,该插件本质上是一个 ruby​​ 脚本

小智 6

这只是格式。完整的命令行在对象中,但是当对象被转换为用于打印的字符串(默认格式使用“ft”)时,对象的格式会减少该行。如果您以不同的方式格式化,使用列表格式化程序,您可以获得更长格式的完整数据:

.. your command ... | fl
Run Code Online (Sandbox Code Playgroud)

如果你想在脚本中使用结果,你不需要关心格式,只需从管道中的对象中获取属性 .CommandLine (然后你也可以跳过“选择”命令)。

为了将文本写入 Ruby 脚本,您可以显式地生成带有空格分隔字段的文本字符串:

gwmi win32_process | % { "$($_.ProcessID) $($_.ParentProcessID) $($_.GetOwner().User) $($_.CommandLine)" }
Run Code Online (Sandbox Code Playgroud)

要让默认的“表格”格式化程序包装列,请使用:

... | ft -wrap
Run Code Online (Sandbox Code Playgroud)

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