Як отримати команду, яка викликала завдання із списком завдань?


18

У менеджері завдань Windows є стовпець із позначкою Командний рядок, який показує команду, яка розпочала дану задачу, з усіма перемикачами та параметрами, наприклад:

test.exe -V -A 127.0.0.1 -P 6062

Тепер я маю визначити певне завдання, яке прослуховується на певному порту та / або викликалося з певною комбінацією комутаторів. Моя мета - закрити вибране завдання, але не інші, тому, якщо працює кілька test.exeзавдань, я не можу просто закрити всі завдання, повернені:

tasklist /fo csv /nh /fi "imagename eq test.exe"

На жаль, схоже, що ні, tasklistні pslist( тут ) не в змозі повернути поле командного рядка . Як я можу подолати цю проблему?


Можливо, ви можете зробити щось із netstat -aon | grep \.0:6062портом 6062, і останній стовпець буде PID вашої програми. Не впевнений, чи цього вам достатньо. tasklist /FI "PID eq <PID>"знову дасть ваш виконуваний файл.
— Рік

@Rik На жаль, цього недостатньо, оскільки самого порту недостатньо для ідентифікації правильної задачі, тому необхідно також переглянути аргументи командного рядка.
— Іштван Зачар

Не уявляю, що на одному порті прослуховуються декілька програм ... :) Але параметри повинні бути отримані ... process explorerвід Sysinternals можуть показати це в gui. Отже інформація повинна бути десь.
— Рік

Чи є у вас використання для команди powerhell? Як <<< Get-WmiObject win32_process -Filter "назва типу"% test.exe "" | виберіть CreationDate, ProcessId, CommandLine | ft -AutoSize ">>> Дивіться тут
— Рік

@ Rik, порт, звичайно, інший, але я повинен витягнути аргументи командного рядка і перевірити, чи є завдання, яке мені потрібно вбити.
— Іштван Зачар

Відповіді:


35

Як щодо цього:

wmic process where caption="test.exe" get commandline

І якщо ви це зробите, ви також отримаєте ProcessId для вбивства:

wmic process where caption="test.exe" get commandline,processid

wmicтакож має перемикач на вихід на CSV. Так:

wmic /output:c:\temp\proc.csv process where caption="test.exe" get commandline,processid /format:csv

Примітка: Якщо ви отримуєте повідомлення про помилку з останнім ( Invalid XSL format (or) file name) вам потрібно скопіювати csv.xmlз %WINDIR%\System32\wbem\en-USв %WINDIR%\System32\wbem. Про цю помилку ви можете прочитати тут .


Ви також можете використовувати PowerShell:

Get-WmiObject win32_process -Filter "name like '%test.exe'"|select CreationDate,ProcessId,CommandLine|ft -AutoSize`

Дякую, це все, wmicвирішує проблему, і цим завершується день. :)
— Іштван Зачар

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