2

Это команда, которую я запускаю в 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 ответ1

5

Это просто форматирование. Полная командная строка есть в объекте, но форматирование объектов, когда они преобразуются в строки для печати (форматирование по умолчанию использует "ft"), сокращает строку. Если вы форматируете по-другому, с помощью средства форматирования списка, вы получите полные данные в более длинной форме:

.. your command ... | fl

Если вы хотите использовать результаты в сценарии, вам не нужно заботиться о форматировании, просто получите свойство.CommandLine из объектов в конвейере (и тогда вы можете пропустить команду "выбрать" тоже).

Для получения текста в сценарии Ruby вы можете просто явно создать текстовые строки с разделенными пробелами полями:

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

Чтобы использовать форматировщик таблицы по умолчанию для переноса столбцов, используйте:

... | ft -wrap

Я не знаю, как сделать так, чтобы он отображал длинные строки, я думаю, что это выполнимо путем определения настраиваемого представления форматирования для этого класса объектов, но я никогда сам этого не делал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .