Всем привет.
Как вы знаете, с версии 7 Windows Диспетчер задач приобрел очень полезную фишку - он может показать зависимость между процессами и службами. Что я имею ввиду?
Вы можете выбрать любой процесс на вкладке "Процессы", правым кликом вызвать всплювающее меню, и там внизу выбрать "Перейти к службам". И вуаля, синим цветом будут выделены службы в которых это процесс учавствует.
Точно также вы можете выбрать службу на вкладке "Службы", правым кликом вызвать всплювающее меню, и там внизу выбрать "Перейти к процессу".
Если вам ничего не выбралось то это не значит что такого процесса нет, просто надо обязательно отметить "Отображать процессы всех пользователей".
Тоже самое, и даже больше, выполняется в Powershell.
Так получим полную информацию по процессу SNMP:
Write-Host "= 0 ====================================="
#List of DLLs this process
$p = get-process snmp
$p | fl *
#List of DLLs this process
$p = get-process snmp
$p | fl *
А так какие DLL-библиотеки он использует:
Write-Host "= 1 ====================================="
$p.modules
$p.modules
Ну и глянуть какие ресурсы и сколько использует конкретная DLL:
Write-Host "= 1.1 ====================================="
#about current DLL
get-process | where-object {$_.modules -match "usp10.dll"}
#about current DLL
get-process | where-object {$_.modules -match "usp10.dll"}
А теперь провернем тоже что делали выше с "Диспетчер задач".
Получаем еще раз информацию по процессу:
Write-Host "= 2 ====================================="
#about current Process
$p = get-wmiobject -class win32_process -filter "Name='snmp.exe'"
$p | fl *
#about current Process
$p = get-wmiobject -class win32_process -filter "Name='snmp.exe'"
$p | fl *
А так получаем службы которые связаны с этим процессом:
Write-Host "= 2.1 ====================================="
$index=$p.processid
get-wmiobject -class win32_service -filter "ProcessId=$index"
$index=$p.processid
get-wmiobject -class win32_service -filter "ProcessId=$index"
Обратная задачка - читаем про службу SNMP:
Write-Host "= 3 ====================================="
#about current Service
$s = get-wmiobject -class win32_service -filter "name='SNMP'"
$s | fl *
#about current Service
$s = get-wmiobject -class win32_service -filter "name='SNMP'"
$s | fl *
И получаем процесс имеющий к ней отношение:
Write-Host "= 3.1 ====================================="
#List of processes for current Service
get-process -id $s.processid
#List of processes for current Service
get-process -id $s.processid
Или одним махом можно сделать так:
Write-Host "= 3.2 ====================================="
get-wmiobject -class win32_service -filter "name='SNMP'" |
foreach ($a) {get-process -id $_.processid}
get-wmiobject -class win32_service -filter "name='SNMP'" |
foreach ($a) {get-process -id $_.processid}
Вот и все. Успехов.
No comments:
Post a Comment
А что вы думаете по этому поводу?