На Mac и Linux вы можете запустить
pkill -f "(chrome)?(--headless)"
убить всех безголовых экземпляров Chrome.
Я хотел бы что-то подобное, что будет работать на Windows.
На Mac и Linux вы можете запустить
pkill -f "(chrome)?(--headless)"
убить всех безголовых экземпляров Chrome.
Я хотел бы что-то подобное, что будет работать на Windows.
К сожалению, CommandLine
нелегко получить с помощью обычных команд управления процессами, поэтому нам нужно углубиться в WMI. Это делает команду более сложной, но вы можете использовать псевдоним или скрыть ее в сценарии / функции, которую вы можете использовать повторно.
Вот пример того, как вы можете сделать это в PowerShell:
Get-CimInstance Win32_Process -Filter "Name = 'chrome.exe' AND CommandLine LIKE '%--headless%'" | %{Stop-Process $_.ProcessId}
Немного обобщив, мы можем также получить:
$name = 'chrome.exe'
$cmdcontains '--headless'
Get-CimInstance Win32_Process -Filter "Name = '$name' AND CommandLine LIKE '%$cmdcontains%'" | %{Stop-Process $_.ProcessId}
В качестве альтернативы, Name
может использовать более слабое соответствие или мы можем фильтровать чисто по CommandLine, как вы делаете в настоящее время:
Get-CimInstance Win32_Process -Filter "CommandLine LIKE '%chrome.exe%--headless%'" | %{Stop-Process $_.ProcessId}
В более общем смысле вы можете расширить его до командлета с помощью сценария: https://technet.microsoft.com/en-us/library/ff677563.aspx
Тот же процесс применяется, если вы хотите сделать это в cmd, за исключением того, что вам нужно извлечь PID из выходных данных wmic
и передать их в taskkill
.