Вбивчий процес, заснований на шляху до зображення


3

Я успадкував середовище, в якому два різні процеси використовують однакові імена, але їх виконувані файли зберігаються в різних шляхах до файлів. Жоден, один, другий або обидва не можуть працювати в будь-який час.

Коли я виконую певні операції (наприклад, виправлення), я хочу, щоб процес, пов'язаний з каталогом патчу, був припинений, але не інший.

Використовуючи різні методи, я не маю проблем із завершенням процесів, заснованих на назві процесу, таких як (менш елегантно, не використовуючи powerhell):

echo Checking for procname process...
tasklist /FI "IMAGENAME eq procname .exe" | !windir!\system32\find /I "procname.exe" 
set EL=!ERRORLEVEL!
if !EL! EQU 0 (
    echo Killing procname process...
    TASKKILL /F /FI "IMAGENAME eq procname.exe"
)

або більш елегантно (використовуючи паттерн)

powershell Clear-Host 
powershell Stop-Process -name procname

Однак ці два способи знищують обидва процеси, якщо вони запущені.

Замість того, щоб вбивати ці процеси на основі назви їхнього процесу, як я можу вбити процес, заснований на шляху до їх виконуваного файлу?


Вибачте, я зараз не маю змоги опрацювати це, але ось кілька ідей: WMIC PROCESS WHERE name="calc.exe" DELETEіWMIC PROCESS LIST FULL
TOOGAM

Відповіді:


2

Я знайшов спосіб зробити те, що хочу, і подумав, що поділюсь рішенням.

Це рішення потребує повноважень.

powershell Get-Process <ProcessName> ^| Where-Object {$_.Path -like '*<path_fragment>*'} ^| Stop-Process

** "^ |" труби необхідні для утримання труб в межах перекладача повноважень. Використання звичайної труби ("|"), здається, передає її назад звичайному інтерпретатору команд і порушує команду.

Щоб поставити деякі реальні значення за цим кодом, припустимо, що процес вбивства - це Notepad ++:

powershell Get-Process notepad++ ^| Where-Object {$_.Path -like '*Notepad++*'} ^| Stop-Process

Це можна викликати в командному рядку з пакетного файлу (що є моїм наміром).

Якщо користувачі можуть побачити вихід із команди, наведеної вище, в кінці рядка покладіть строковий переспрямування на нуль. Коли Get-Process щось не знаходить, він видає досить серйозну помилку - але це просто спосіб сказати: "Я нічого не знайшов".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.