Powershell и uac

Подскажите, пожалуйста:
1. Можно ли убрать всплывающее окно uac без его отключения при использовании -verb. Для пример так:
powershell -verb runas -File c:\scripts\sct12.ps1
При его запуске вылезает всплывающее окно uac с просьбой подтвердить действие. После подтверждения скрипт отрабатывает корректно.
Может другой ключ есть? ОС Windows server 2012R2, но интересует для любой windows. UAC отключать не хочется, так как действие в скрипте может быть разовое. Я так понял, что только отключение uac.
2. Как скриптом изменить уровень uac для компьютера в рабочей группе. Я так понял что в сторону локальных политик безопасности надо лезть.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как заставить батник обойти UAC, не отключая службу UAC в целом
Добрый день, уважаемые программисты. Помогите решить проблему. Запускаю файл (через ярлык с.
Как заставить батник обойти UAC, не отключая службу UAC в целом
Господа помогите, нужно baat запустить от имени администратора, но это не работает потому как uac.
PowerShell vs PowerShell ISE
Скажите, пожалуйста, чем PowerShell отличается от PowerShell ISE. Спасибо.
UAC и С#
Пишу программу, которая должен запускать обычный юзер. Но там происходит запуск процесса из тойже.
Как обойти окно uac powershell
Сообщения: 13
Благодарности: 0
Подскажите, пожалуйста:
1. Можно ли убрать всплывающее окно uac без его отключения при использовании -verb. Для пример так:
powershell -verb runas -File c:\scripts\sct12.ps1
При его запуске вылезает всплывающее окно uac с просьбой подтвердить действие. После подтверждения скрипт отрабатывает корректно.
Может другой ключ есть? ОС Windows server 2012R2, но интересует для любой windows. UAC отключать не хочется, так как действие в скрипте может быть разовое. Я так понял, что только отключение uac.
2. Как скриптом изменить уровень uac для компьютера в рабочей группе. Я так понял что в сторону локальных политик безопасности надо лезть.
Skip UAC Prompt – простое отключение контроля учетных записей для отдельных программ
Если у вас включен контроль учетных записей, а в Windows он активен по умолчанию, при запуске требующих прав администратора программ на экране будет появляться окно UAC с просьбой подтвердить запуск приложения. Полезная и нужная дополнительная функция безопасности, блокирующая несанкционированную активность нежелательного и вредоносного программного обеспечения, но у многих пользователей кроме раздражения она ничего не вызывает.
Особенно, если требующая проверки UAC программа добавлена пользователем в автозагрузку.

Отключать контроль учетных записей на уровне системы, наверное, не самое лучшее решение, а вот создание для него списка исключений является вполне приемлемым и оправданным.
Помочь сформировать такой список может Skip UAC Prompt – небольшая бесплатная портативная программа от разработчика Sordum . Она вам наверняка пригодится, если не хотите копаться в реестре, планировщике заданий или засорять свой ПК тяжеловесными платформами типа Application Compatibility Toolkit.
Как пользоваться Skip UAC Prompt
Предположим, вы часто пользуетесь редактором реестра и не хотите, чтобы Windows постоянно запрашивала подтверждение на его запуск.
Запустите исполняемый файл утилиты подходящей разрядности и нажмите на панели инструментов кнопку «Плюс» либо выберите в меню «File» опцию «Add File».

В открывшемся окошке укажите путь к исполняемому файлу программы, которую хотите добавить в белый список.
В нашем примере это regedit.exe . По умолчанию Skip UAC Prompt добавляет вносимое в белый список приложение в автозагрузку, что не всегда нужно. В этом случае отключите опцию «Execute on User Login» .

Также обратите внимание на блок «Window State» – он содержит настройки, отвечающие за режим запуска игнорируемого UAC приложения. По умолчанию окна открываются в обычном режиме, но вы можете выбрать скрытый, свернутый в трей и развернутый вид окна. Аналогичным образом в список добавляются все программы. Удаляются элементы нажатием соответствующей кнопки на панели инструментов.
Важно, однако, отметить, что обход контроля учетных записей будет работать только при активации опции «Execute on User Login».
Если вы не планируете использовать автозагрузку, создайте для добавленной в белый список программы ярлык из ее контекстного меню и запускайте оную с него.

Во всех остальных случаях запуск будет контролироваться UAC , кроме запуска через запущенную от имени администратора командную строку или PowerShell.
Дополнительные возможности программы особого интереса для рядового пользователя не представляют. Для справки – утилитой поддерживается быстрый переход в каталог с исполняемым файлом добавленного приложения, использование аргументов командной строки, а также экспорт и импорт пользовательской конфигурации.
Глава 1. Начало работы с PowerShell
Я часто вижу, что выступающие на конференциях и собраниях групп пользователей уже работают с PowerShell, когда демонстрируют презентации начального уровня. Эта книга начинается с ответов на вопросы, которые задавали участники мероприятий, ранее не использовавшие PowerShell.
В частности, эта глава посвящена поиску и запуску PowerShell, а также решению некоторых первоначальных проблем, с которыми сталкиваются новые пользователи при работе с PowerShell. Обязательно ознакомьтесь с примерами, приведенными в этой главе, и выполните их на компьютере Windows 10 с лабораторной средой.
Что нужно, чтобы начать работу с PowerShell?
Все современные версии операционных систем Windows поставляются с установленной оболочкой PowerShell. Если вы используете версию, предшествующую 5.1, следует установить последнюю версию.
- Сведения об обновлении до версии PowerShell 5.1 см. в разделе Обновление существующей версии Windows PowerShell.
- Сведения об установке последней версии PowerShell см. в статье Installing Windows PowerShell.
Где найти PowerShell?
Самый простой способ найти PowerShell в Windows 10 — ввести PowerShell в строке поиска, как показано на рис. 1-1.

Обратите внимание, что на рис. 1-1 показаны четыре разных ярлыка для PowerShell. Компьютер, используемый в демонстрационных целях в этой книге, работает под управлением 64-разрядной версии Windows 10, поэтому существует 64-разрядная версия консоли PowerShell и PowerShell ISE (интегрированной среды сценариев) и 32-разрядная версия каждой из них (обозначена суффиксом (x86) на ярлыках). Если вы работаете с 32-разрядной версией Windows 10, у вас будет только два ярлыка. У этих элементов нет суффикса (x86), но они являются 32-разрядными версиями. Если у вас установлена 64-разрядная операционная система, рекомендуется запускать 64-разрядную версию PowerShell, только если вас нет особой причины для запуска 32-разрядной версии.
Сведения о запуске PowerShell в других версиях Windows см. в статье Запуск Windows PowerShell.
Как запустить PowerShell?
В производственной среде предприятия, которую я поддерживаю, я работаю с тремя разными учетными записями пользователей Active Directory. В лабораторной среде в этой книге используются зеркальные экземпляры этих учетных записей. Я вошел на компьютер с Windows 10 в качестве пользователя домена, который не является администратором домена или локальным администратором.
Я запустил консоль PowerShell, щелкнув ярлык Windows PowerShell, как показано на рис. 1-1.

Обратите внимание, что в строке заголовка консоли PowerShell указано «Windows PowerShell», как показано на рис. 1-4. Некоторые команды выполняются нормально, но PowerShell не поддерживает управление доступом пользователей (UAC). Это означает, что оболочка не может запрашивать повышение прав для задач, требующих утверждения администратором. Выдается следующее сообщение об ошибке.
Get-Service -Name W32Time | Stop-Service
Stop-Service : Service 'Windows Time (W32Time)' cannot be stopped due to the following error: Cannot open W32Time service on computer '.'. At line:1 char:29 + Get-Service -Name W32Time | Stop-Service + + CategoryInfo : CloseError: (System.ServiceProcess.ServiceController:ServiceController) [Stop-Service], ServiceCommandException + FullyQualifiedErrorId : CouldNotStopService,Microsoft.PowerShell.Commands.StopServiceCommand
Решение этой проблемы заключается в запуске PowerShell от имени пользователя домена, который является локальным администратором. Именно так настроена моя вторая учетная запись пользователя домена. Используя принцип минимальных привилегий, эта учетная запись НЕ должна быть администратором домена или иметь повышенные привилегии в домене.
Закройте PowerShell. Перезапустите консоль PowerShell, только на этот раз щелкните правой кнопкой мыши ярлык Windows PowerShell и выберите пункт Запуск от имени администратора, как показано на рис. 1-5.

Если вы выполнили вход в Windows в качестве обычного пользователя, вам будет предложено ввести учетные данные. Я буду вводить учетные данные учетной записи пользователя, которая является пользователем домена и локальным администратором, как показано на рис. 1-6.

После повторного запуска PowerShell с правами администратора в строке заголовка должно быть указано «Администратор: Windows PowerShell», как показано на рис. 1-7.

Теперь, когда PowerShell работает с повышенными привилегиями локального администратора, управление доступом пользователей больше не будет проблемой в случае запуска на локальном компьютере команды, для выполнения которой обычно требуется запрос на повышение прав. Следует иметь в виду, что любая команда, выполняемая из этого экземпляра консоли PowerShell с повышенными привилегиями, также запускается с повышенными привилегиями.
Чтобы упростить поиск PowerShell и запускать оболочку от имени администратора, рекомендуется закрепить ее на панели задач и настроить автоматический запуск от имени администратора при каждом запуске.
Еще раз выполните поиск PowerShell, только на этот раз щелкните ее правой кнопкой мыши и выберите пункт «Закрепить на панели задач», как показано на рис. 1-8.

Щелкните правой кнопкой мыши ярлык PowerShell, который теперь закреплен на панели задач, и выберите пункт «Свойства», как показано на рис. 1-9.

Щелкните «Дополнительно», как показано в первой части рис. 1-10, установите флажок «Запуск от имени администратора», как показано во второй части рис. 1-10, а затем дважды нажмите кнопку OK, чтобы принять изменения и выйти из обоих диалоговых окон.

Вам больше никогда не придется беспокоиться о поиске PowerShell или о том, запущена ли оболочка от имени администратора или нет.
Запуск PowerShell с повышенными привилегиями для предотвращения проблем, связанных с управлением доступом пользователей, влияет только на команды, выполняемые на локальном компьютере. Он не влияет на команды, предназначенные для запуска на удаленных компьютерах.
Какую версию PowerShell я использую?
В PowerShell существует ряд автоматических переменных, в которых хранятся сведения о состоянии. Одной из этих переменных является $PSVersionTable , содержащая хэш-таблицу, которую можно использовать для вывода соответствующих сведений о версии PowerShell.
$PSVersionTable
Name Value ---- ----- PSVersion 5.1.19041.1 PSEdition Desktop PSCompatibleVersions BuildVersion 10.0.19041.1 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
Более новые версии Windows PowerShell распространяются в составе Windows Management Framework (WMF). Конкретная версия .NET Framework зависит от версии WMF. Сведения об обновлении до версии PowerShell 5.1 см. в разделе Обновление существующей версии Windows PowerShell.
Политика выполнения
Вопреки распространенному мнению, политика выполнения в PowerShell не является средством обеспечения безопасности. Она предназначена для предотвращения непреднамеренного выполнения сценария пользователем. Определенный пользователь может без труда обойти политику выполнения в PowerShell. В таблице 1-2 показана политика выполнения по умолчанию для текущих операционных систем Windows.
| Версия операционной системы Windows | Политика выполнения по умолчанию |
|---|---|
| Server 2019 | Удаленно подписанная |
| Server 2016 | Удаленно подписанная |
| Windows 10 | С ограниченным доступом |
Любая команда PowerShell может выполняться в интерактивном режиме, независимо от настройки политики выполнения. Политика выполнения влияет только на команды, выполняемые в сценарии. Командлет Get-ExecutionPolicy используется для определения текущего параметра политики выполнения, а командлет Set-ExecutionPolicy используется для изменения политики выполнения. Рекомендуется использовать политику RemoteSigned, которая требует, чтобы предназначенные для выполнения скачиваемые сценарии были подписаны доверенным издателем.
Проверка текущей политики выполнения
Get-ExecutionPolicy
Restricted
Если для политики выполнения задано С ограниченным доступом, сценарии PowerShell вообще не запускаются. Это параметр по умолчанию для всех клиентских операционных систем Windows. Чтобы продемонстрировать проблему, сохраните следующий код как файл .ps1 с именем Stop-TimeService.ps1 .
Get-Service -Name W32Time | Stop-Service -PassThru
Эта команда выполняется в интерактивном режиме без ошибок при условии, что PowerShell запущена с повышенными правами администратора. Но при сохранении в виде файла сценария и попытке выполнить сценарий выдается ошибка.
.\Stop-TimeService.ps1
.\Stop-TimeService.ps1 : File C:\demo\Stop-TimeService.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 + .\Stop-TimeService.ps1 + + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess
Обратите внимание, что в сообщении об ошибке, приведенном в предыдущем наборе результатов, указывается точная проблема (в этой системе отключено выполнение сценариев). При выполнении в PowerShell команды, которая создает сообщение об ошибке, обязательно следует прочесть сообщение об ошибке, а не просто перезапустить команду и надеяться на ее успешное завершение.
Измените политику выполнения PowerShell на удаленно подписанную.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):y
Обязательно прочтите предупреждение, которое отображается при изменении политики выполнения. Кроме того, рекомендуется ознакомиться с разделом справки about_Execution_Policies, чтобы знать о влиянии изменения политики выполнения на безопасность.
Теперь, когда для политики выполнения задано значение Удаленно подписанная, сценарий Stop-TimeService.ps1 будет выполняться без ошибок.
.\Stop-TimeService.ps1
Status Name DisplayName ------ ---- ----------- Stopped W32Time Windows Time
Прежде чем продолжить, запустите службу времени Windows. В противном случае могут возникнуть непредвиденные проблемы.
Start-Service -Name w32time
Сводка
В этой главе вы узнали, как найти и запустить PowerShell, а также как создать ярлык для запуска PowerShell от имени администратора. Вы также ознакомились с политикой выполнения по умолчанию и поняли, как ее изменять.
Просмотр
- Как определить версию PowerShell, установленную на компьютере?
- Почему важно запускать PowerShell с повышенными правами администратора?
- Как определить текущую политику выполнения PowerShell?
- Чему препятствует политика выполнения PowerShell по умолчанию на клиентских компьютерах Windows?
- Как изменить политику выполнения PowerShell?
Рекомендуем прочесть
Тем, кто хочет более подробно изучить темы, описанные в этой главе, рекомендуется ознакомиться со следующими разделами справки по PowerShell.
- about_Automatic_Variables
- about_Hash_Tables
- about_Execution_Policies
В следующей главе вы узнаете о возможности обнаружения команд в PowerShell. Помимо прочих вопросов в ней будет рассматриваться обновление PowerShell, после которого разделы справки можно будет просматривать непосредственно в PowerShell, а не в Интернете.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.