Существует ли нежный способ остановить процессы с помощью Windows PowerShell?

Я должен остановить браузер из сценария PowerShell, который я делаю путем передачи по каналу его в

Stop-Process -Force

Однако это является очень резким. Когда браузер перезапущен, он обнаруживает, что не закрывался чисто и пытается перезапустить предыдущую сессию. Есть ли некоторый способ, которым я могу сказать этому завершать работу себя корректно? ("Существует два способа, которыми мы можем сделать это..."),

15
задан Charles Anderson 27 April 2010 в 16:24
поделиться

2 ответа

Попробуйте имитировать закрытие приложения пользователем:

(Get-Process -Id 10024).CloseMainWindow()
12
ответ дан 1 December 2019 в 02:55
поделиться

Кейт Хилл уже предложил использовать CloseMainWindow (). Но это всего лишь приглашение к закрытию, может потребоваться некоторое взаимодействие с пользователем, например, приложение может показывать некоторые диалоги для сохранения чего-либо и т. Д. Если вызывающий сценарий действительно ожидает завершения процесса, я использую этот шаблон:

# close the window and wait for exit
$_ = Get-Process -Id 12345
[void]$_.CloseMainWindow()
if (!$_.HasExited) {
    Write-Host "Waiting for exit of Pid=$($_.Id)..."
    $_.WaitForExit()
}
11
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: