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


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.