Как найти нужный процесс?
September 23rd, 2006
Последнее время я только тем и занимался, что копался в недрах системных служб в отладчике. Половина из них использует “svchost.exe” в качестве исполняемого файла, что довольно неудобно, когда пытаешься подсоединиться к нужному процессу. Никогда не знаешь какой именно из многочисленных “svchost.exe” нужно выбрать.
В Vista эта проблема решается наличием дополнительной страницы “Services” в Task Manager. Там в контекстном меню службы есть пункт “Go to the process”, который подсвечивает искомый процесс.
В XP этой страницы нет, но оказалось что нужный идентификатор можно получить через WMI. Например вот так:
get-wmiobject Win32_Service | where-object { $_.Name -eq "rpcss" }
Строка “ProcessId” как раз и есть то, что нам нужно:
ExitCode : 0
Name : RpcSs
ProcessId : 1292
StartMode : Auto
State : Running
Status : OK
А вообще – насколько хорош powershell? То есть — какого рода задачи можно с помощью его обычному прикладному .net разработчику выполнять? Есть ли какие-нибудь, кроме этого, cases?
Думаю имеет смысл посмотреть на The Script Center Script Repository: http://www.microsoft.com/technet/scriptcenter/scripts/msh/default.mspx?mfr=true
PowerShell дает пользоваться всеми возможностями .NET и WMI без привлечения “тяжелой артилерии” в виде компилятора. Это основное его преимущество, на мой взгляд. Библиотека .NET подзоляет не изобретать велосипед по каждому поводу. WMI же – это просто клад для системного адмнистратора (если он хотя бы немного программист). Так что на данном этапе, пока не накописаль “база стандартных скриптов”, успешность PowerShell зависит от умения пользоваться .NET и WMI. Я так думаю! (с)
Есть еще прекрасная утилита Prio, которая похоже делает в ХРшном таскменеджере то же самое http://www.prnwatch.com/prio.html.
Симпатишная утилитка. Спасибо.