PowerShell: Закрыть окно после повышения привилегий

В этой заметке скрипт определял права пользователя и, если пользователь не обладал правами администратора, то происходил автоматический вызов этого же скрипта, но уже с попыткой повысить уровень привилегий. Т.е. появлялся запрос UAC для подтверждения данного действия. После того, как было получено подтверждение UAC, открывалось новое окно PowerShell, но при этом старое окно не закрывалось. Я решил добавить код, который бы закрывал это окно.
В принципе сам код очень простой и практически не требует комментариев — нам нужно просто убить процесс с текущим PID. Для получения ID текущего процесса в PowerShell имеется автоматическая переменная: $PID. Поэтому в нашем случае нужно лишь немного изменить старый код:

if (-not $IsAdmin)
{
  Write-Output "The script is NOT running as Administrator, restarting PowerShell as Administrator..."
  # ...... SKIPPED CODE ....
  Stop-Process -Id $PID
}


Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments