2015-11-24 116 views
1

我想通過其ParentProcessID殺死正在運行的進程。我想這樣做,就像你可以在命令行做到這一點:通過ParentProcessID殺死進程

wmic process where parentprocessid= 3008 terminate 

但現在的問題是,在PowerShell中我已經在ParentProcessID因爲像這樣的變量:

$p = 3008 

現在我想在varibale $p殺掉進程,但是這並不工作:

wmic process where parentprocessid= $p terminate 

我怎樣才能通過其ParentProcessID殺死一個進程,如果我有存儲在瓦里的ParentProcessID能夠?

+1

嗨,爲什麼你不使用'Get-Process'?你應該絕對使用wmic? – kekimian

+1

'wmic process where parentprocessid = $ p terminate' – PetSerAl

+1

@kekimian - 'Get-Process'不會告訴你父進程的信息 – Sean

回答

0

我找到了解決方案,它只是刪除「=」和變量名稱之間的空格。

wmic process where parentprocessid=$p terminate 
3

檢索的Win32_Process對象與Get-WmiObject和管道它Invoke-WmiMethod調用Terminate方法:

Get-WmiObject Win32_Process -Filter "ParentProcessId=$p" | Invoke-WmiMethod Terminate 
1

試試這個:

$parentId = 3008 
$name = "Process name" 

Get-WmiObject -Class Win32_Process | 
where {$_.ParentProcessId -eq $parentId -and $_.Name -eq $name} | 
foreach {$_.terminate(0)} 

新增$name參數的原因可能有以下幾個子進程。如果你需要kill'em只是跳過-and $_.Name -eq $name