在Windows中,我们打开进程任务管理器的时候会发现有许许多多的进程,但是当你点击一个进程的时候就会发现他还包含有一些子进程,可能已经没有在做任何处理了,或者夜有可能是某些病毒木马恶意进程,一般没有专用的软件是无法查看具体某一进程的父进程是什么的,今天我们用PowerShell来查看某一进程的父进程。
$process = Get-Process -Name notepad
$id = $process.Id
$instance = Get-CimInstance Win32_Process -Filter "ProcessId = '$id'"
$instance.ParentProcessId
$parentProcess = Get-Process -Id $instance.ParentProcessId
$parentProcess
如上代码,可以查看notepad进程的父进程是什么,我们一步步来拆解一下:
我们首先获得要查看进程的对象信息
$process = Get-Process -Name notepad
在获得进程对象信息后,在提取该进程的ID号
$id = $process.Id
在获得ID号后,我们这里使用Win32-Process WMI的方法来过滤出我们的进程,并得到该进程的数据对象。
$instance = Get-CimInstance Win32_Process -Filter "ProcessId = '$id'"
当用WMI的方法过滤得到我们的进程后,我们就可以直接调用ParentProcessId属性来得到我们的父进程Id号了。
$instance = Get-CimInstance Win32_Process -Filter "ProcessId = '$id'"
$instance.ParentProcessId
既然最终得到ParentProcessId号后,我们就可以用Get-Process方法查找出到底哪个进程是我们的父对象了。
$parentProcess = Get-Process -Id $instance.ParentProcessId
$parentProcess