Могу ли я использовать PowerShell 1.0 для вывода списка процессов вместе с их PID и командными строками?
-
22-07-2019 - |
Вопрос
РЕДАКТИРОВАТЬ ОП: Мой вопрос предполагал, что PowerShell — лучший инструмент для этой работы.Есть более простой способ достижения моей цели.Друг только что рассказал мне о: iisapp.vbs.Он отображает именно ту информацию, которая мне нужна, без необходимости использования PowerShell.
Я работаю с десятками веб-сайтов ASP.NET, работающих локально, и когда я хочу отладить конкретный веб-сайт с именем, например, foo.site.com, я выполняю следующие шаги:
Запустите Process Explorer (из SysInternals) и найдите, какой файл w3wp.exe был запущен с помощью foo.site.com в командной строке.
Обратите внимание на идентификатор процесса (PID) этого процесса w3wp.exe.
В Visual Studio прикрепите к этому идентификатору процесса.
Есть ли способ написать сценарий PowerShell, который будет печатать PID и аргументы командной строки каждого процесса w3wp.exe, запущенного на моем компьютере?
Когда я запускаю get-process w3wp, я получаю:
> get-process w3wp
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
688 28 44060 64576 226 2.75 196 w3wp
750 26 48328 68936 225 3.38 1640 w3wp
989 36 54596 83844 246 4.92 1660 w3wp
921 33 54344 80576 270 4.24 5624 w3wp
773 27 48808 72448 244 2.75 5992 w3wp
Нет информации о командной строке :(
Спасибо!
РЕДАКТИРОВАТЬ:Я ищу аргументы командной строки, которые были переданы в w3wp.
Решение
gwmi win32_process -filter "name='w3wp.exe'" | select name,processId,commandLine
Это должно сработать.Мне кажется странным, что powershell по умолчанию не предоставляет информацию из командной строки.Примечание :Я тестировал его только в PowerShell 2.0, но, поскольку он использует WMI, он должен работать и в 1.0.
РЕДАКТИРОВАТЬ :окончательная версия, использованная Тимом Стюартом (чтобы избежать проблем с отображением, см. комментарий):
gwmi win32_process -filter "name='powershell.exe'" | format-table -autosize name,processId,commandLine
Другие советы
Моим первым побуждением было воспользоваться get-process и посмотреть на свойство startinfo:
get-process w3wp | select-object id, path, @{Name="Args";Expression = {$_.StartInfo.Arguments}}
К сожалению, это не работает, поскольку $_.StartInfo.Argments всегда имеет значение null.Хотя WMI работает.
get-wmiobject win32_process -filter "name='w3wp.exe'" | select-object processid, commandline
Это должно работать:
Get-Process | идентификатор формата стола, путь