Como posso obter o comando completo e o id do processo pai a partir do powershell?

2

É o comando que eu executo no powershell

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

E aqui está uma listagem parcial da saída

                            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 

Eu quero saber como posso obter a linha de comando completa? (não truncado como mostrado acima)

Eu preciso capturar a saída para processamento em um plugin sensu , que é essencialmente um script ruby

    
por Anthony Kong 03.03.2015 / 02:34

1 resposta

5

É apenas a formatação. A linha de comando completa está lá no objeto, mas a formatação dos objetos quando eles são convertidos em strings para impressão (a formatação padrão usa "ft") reduz a linha. Se você formatar de maneira diferente, com o formatador de lista, você obtém os dados completos no formato mais longo:

.. your command ... | fl

Se você quiser usar os resultados em um script, você não precisa se preocupar com formatação, apenas obtenha a propriedade .CommandLine dos objetos no pipeline (e então você pode pular o comando "select" também).

Para obter o texto em um script Ruby, você pode produzir explicitamente as strings de texto com campos separados por espaço:

gwmi win32_process | % { "$($_.ProcessID) $($_.ParentProcessID) $($_.GetOwner().User) $($_.CommandLine)" }

Para que o formatador "table" padrão envolva as colunas, use:

... | ft -wrap

Eu não sei como mostrar as linhas longas, acho que é possível definir uma visualização de formatação personalizada para essa classe de objeto, mas eu nunca fiz isso sozinho.

    
por 04.03.2015 / 00:24