Мне нужен пакетный скрипт для Taskkill с помощью «Командная строка» аргументов («Командная строка» из диспетчера задач Windows).Чтобы уточнить - это процессы dotnet core приложения.Они запускаются через:
dotnet MyDotnetCoreApp.dll xxx гггг
Если вы изучите в разделе «Менеджеры задач»,
Имя =dotnet.exe
Имя пути к изображению = C: \ Program Files \ dotnet \ dotnet.exe
Командная строка = dotnet MyDotnetCoreApp.dll xxxггг
Мне нужен пакетный скрипт для уничтожения этих задач, вероятно, с taskkill
OPTION 1 - это Taskkill по PIDно как мой сценарий поиска «Командная строка» аргументы для MyDotnetCoreApp?
ОПЦИЯ 2 является Taskkill по имени изображения?Это не пойдет, так как на моем сервере есть много приложений ядра dotnet, если убить мое имя образа, все процессы ядра dotnet будут убиты
Я исследовал:
https://superuser.com/questions/415360/how-do-i-find-out-command-line-arguments-of-a-running-program
https://www.itprotoday.com/powershell/powershell-contains
Я не могу заставить это работать, не очень хорошо в PowerShell :
Get-WmiObject Win32_Process -Filter "name = 'dotnet.exe'" | Select-Object Handle
Здесь можно получить список PID, с которыми нужно убить.
Две задачи:
Первый вызов , мое предложение WHERE не работает:
Get-WmiObject Win32_Process -Filter "name = 'dotnet.exe'" | where {$_.CommandLine -like '*MyDotnetCoreApp*'} | Select-Object Handle
Я проверил дальше, обнаружил эти "CommandLine"НЕ был заполнен для этих объектов WmiObject (о боже!): Get-WmiObject Win32_Process -Filter "name = 'dotnet.exe'" |Select-Object ProcessId, Name, CSName, Caption, CommandLine, ExecutablePath
Позже я узнал, что «CommandLine» будет заполнен, если вы запустите Powershell от имени администратора !?!(Powershell такой загадочный!)
В конце - Первый вызов был решен :
Get-WmiObject Win32_Process -Filter "name = 'dotnet.exe'" | where {$_.CommandLine -like '*MyDotnetApp*'} | Select-Object ProcessId, Name, CSName, Caption, CommandLine, ExecutablePath
Второй вызов : Как его убить? Нашел это !!
(Get-WmiObject Win32_Process -Filter "name = 'dotnet.exe'" | where {$_.CommandLine -like '*MyDotnetCoreApp*'}).Terminate()
Так что это на самом деле решено!