Как заставить политику выполнения на уровне сеанса без запроса в PowerShell? - PullRequest
0 голосов
/ 27 октября 2019

Я использую следующий код для повторного запуска сценария с правами администратора при необходимости.

# Require admin
if(!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
    exit
}

Однако в некоторых системах, когда я щелкаю правой кнопкой мыши скрипт и выбираю запустить с powershell , он запрашивает что-то вроде да, нет, все, отмена... и т. д. . Я не знаю точно, когда это произойдет. Как я могу принудительно изменить политику выполнения без вышеуказанного запроса? Я проверил документ, и, похоже, для powershell нет параметра -force. Однако для командлета set-executionpolicy есть параметр -force.

1 Ответ

1 голос
/ 27 октября 2019

Причина, по которой «иногда» иногда появляется приглашение, заключается в том, что учетная запись в некоторых «системах» уже запускает ее как администратор (повышение прав уже происходило до этого при входе в систему или отключении с помощью объекта групповой политики). Однако, если вы выполняете это на удаленном компьютере, вам не нужно повышать разрешения, если у вас уже есть права администратора для этого компьютера, но запуск этого из текущего сеанса потребует повышения прав, если пользователь уже не подписан как администратор.

Проверьте документацию от Microsoft на How User Account Control works https://docs.microsoft.com/en-us/windows/security/identity-protection/user-account-control/how-user-account-control-works

С другой стороны, я думаю, что может быть лучший способ для вашего варианта использования.

...