2012-04-22 16 views

Odpowiedz

30

można uzyskać ścieżkę aplikacji:

Get-Process | Where-Object {$_.Path -like "*something*"} | Stop-Process -WhatIf 

który będzie działał tylko na lokalnym komputerze. Aby zakończyć proces zdalnych:

Get-WmiObject Win32_Process -Filter "ExecutablePath LIKE '%something%'" -ComputerName server1 | Invoke-WmiMethod -Name Terminate 
+4

Pierwsze rozwiązanie zadziałało, ale bez parametru - Co to jest – rpeshkov

+1

-Jak to był tylko przełącznik bezpieczeństwa :) –

+3

fyi jeśli dopasujesz wszystkie procesy do '-like" * "' i wykonasz polecenie, to powoduje awarię twojego systemu –

0

Możesz rzucić okiem na właściwość MainModule wewnątrz klasy Process (która może być wywołana za pomocą powłoki powershell).

foreach (Process process in Process.GetProcesses()) 
{ 
    if (process.MainModule.FileName == location) 
    { 
     process.Kill(); 
    } 
} 

Rozważę również możliwe wyjątki, które mogą wystąpić podczas wywoływania tego kodu. Może się tak zdarzyć, jeśli próbujesz uzyskać dostęp do procesów, które nie są już obecne (zabite od czasu ostatniego wywołania GetProcess) lub procesów, dopóki nie masz uprawnień.

0

chciałbym nieco poprawić odpowiedź Shay Levy, ponieważ nie działa dobrze działa na moim konfiguracji (wersja 4 PowerShell)

Get-Process | Where-Object {$_.Path -like "*something*"} | Stop-Process -processname {$_.ProcessName} 
0

Poniższe polecenie zabija procesy, w których "coś" jest częścią ścieżki lub jest parametrem wiersza poleceń. Dowodzi to również przydatne dla skryptów PowerShell zakończenia takich jak
powershell -command c:\my-place\something.ps1 działa something.ps1 z miejsca c:\my-place:

gwmi win32_process | Where-Object {$_.CommandLine -like "*something*"} | % { "$(Stop-Process $_.ProcessID)" } 

Rozwiązanie działa lokalnie na moim 64bit systemu Windows 10 maszyny.

Powiązane problemy