Могу ли я использовать PowerShell 1.0 для вывода списка процессов вместе с их PID и командными строками?

StackOverflow https://stackoverflow.com/questions/1039874

  •  22-07-2019
  •  | 
  •  

Вопрос

РЕДАКТИРОВАТЬ ОП: Мой вопрос предполагал, что PowerShell — лучший инструмент для этой работы.Есть более простой способ достижения моей цели.Друг только что рассказал мне о: iisapp.vbs.Он отображает именно ту информацию, которая мне нужна, без необходимости использования PowerShell.


Я работаю с десятками веб-сайтов ASP.NET, работающих локально, и когда я хочу отладить конкретный веб-сайт с именем, например, foo.site.com, я выполняю следующие шаги:

  1. Запустите Process Explorer (из SysInternals) и найдите, какой файл w3wp.exe был запущен с помощью foo.site.com в командной строке.

  2. Обратите внимание на идентификатор процесса (PID) этого процесса w3wp.exe.

  3. В 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 | идентификатор формата стола, путь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top