Infelizmente, CommandLine
não é facilmente recuperável através dos comandos normais de gerenciamento de processos, então precisamos mergulhar no WMI. Isso tende a tornar o comando mais complexo, mas você pode aliasá-lo ou ocultá-lo em um script / função que possa reutilizar.
Veja um exemplo de como você pode fazer isso no PowerShell:
Get-CimInstance Win32_Process -Filter "Name = 'chrome.exe' AND CommandLine LIKE '%--headless%'" | %{Stop-Process $_.ProcessId}
Simplificando um pouco, também podemos obter:
$name = 'chrome.exe'
$cmdcontains '--headless'
Get-CimInstance Win32_Process -Filter "Name = '$name' AND CommandLine LIKE '%$cmdcontains%'" | %{Stop-Process $_.ProcessId}
Como alternativa, Name
pode usar uma correspondência mais flexível ou podemos filtrar apenas na linha de comando, como você está fazendo atualmente:
Get-CimInstance Win32_Process -Filter "CommandLine LIKE '%chrome.exe%--headless%'" | %{Stop-Process $_.ProcessId}
Mais geralmente, você pode estendê-lo a um cmdlet por meio do script: link
O mesmo processo se aplica se você quiser fazer isso no cmd, exceto que você precisa pegar os PIDs da saída de wmic
e passá-lo para taskkill
.