Как избежать запроса UAC при запуске сценария powershell
Я запускаю скрипт powershell через Дженкинса. Он имеет один командлет, который требует повышенного разрешения. поэтому я пишу эти командлеты, как показано ниже
start-process powershell.exe -verb runas -argumentlist "net localgroups administrators domain\user /add"
Но это побуждает UAC, где я должен вручную нажать Да. затем он движется дальше. Я хочу поднять командлет, не давая подсказки UAC, и продолжать работу....
Учетная запись, используемая для запуска сценария, имеет права администратора на этом компьютере.
2 ответа
Помимо отключения UAC - что, очевидно, должно быть последним средством - вы можете достичь своей цели с помощью создания "запланированной" задачи, которая настроена для запуска с повышенными правами и запуска этой задачи из Jenkins.
Сложность здесь, вероятно, будет заключаться в том, как передавать информацию и извлекать информацию из задачи - возможно, вы сможете достичь этого с помощью некоторых файлов с хорошо известными путями.
Смотрите здесь о том, как настроить такую задачу, а здесь о том, как ее вызвать.
Так как сейчас у меня нет какой-либо установки Jenkins, я не смог ее протестировать.
Проблема в переключателе:
-verb runas
Это указывает Windows, что вам нужен ваш код для запуска от имени администратора.
Удалите это, и Windows перестанет запрашивать у пользователя права администратора.
Ваш следующий вопрос может быть таким:
Но я хочу, чтобы обычный пользователь мог делать вещи, требующие прав администратора.
К сожалению, это запрещено в защищенных операционных системах.
- если я стандартный пользователь
- Я просто не могу просто решить стать администратором
Мне действительно нужно предоставить эти права.
Восьмилетний ребенок или пользователь корпоративного рабочего стола не может просто стать администратором, потому что они написали:
start-process explorer.exe -verb runas
Им понадобится я или кто-то из ИТ-специалистов, чтобы пройти через 6 зданий и ввести свои учетные данные администратора, потому что у меня действительно есть права администратора.
Представьте себе жизнь до UAC
Каждый разработчик, жалующийся на UAC, который ненавидит UAC, хочет вернуться к более раннему UAC. Давайте представим это.
- Это 2002 год, вы используете Windows XP SP3
- Нет UAC, так что вы всегда обычный пользователь
И вы хотите запустить какой-то код от имени администратора.
Вы не можете этого сделать; вы стандартный пользователь.
Единственное решение:
- Быстрое переключение пользователей
- и попросите администратора войти в систему
- пусть они запустят ваш скрипт
- затем они выходят из системы
- и вы быстро переключаетесь обратно на свою учетную запись
UAC намного лучше; поскольку они могут просто ввести свои учетные данные в диалоговом окне UAC:
Но мне просто не нужна подсказка UAC
Вы могли бы сказать:
Меня это не волнует. Мне просто не нужны подсказки UAC. Я хочу, чтобы он работал, как в Windows XP
Если вам не нужны подсказки UAC и вы хотите, чтобы он вел себя так же, как в Windows XP: тогда вы абсолютно можете это сделать. Вы можете полностью отключить UAC.
- Стандартные пользователи всегда будут стандартными пользователями, без возможности повышения
- Администраторы всегда будут пользователями с правами администратора, без необходимости повышения
И это ваше предпочтение, и вы можете это сделать.
Многие другие пользователи не хотят выполнять свою повседневную работу в качестве администратора. Но поскольку вы запускаете свой скрипт только на своем компьютере: все в порядке.