Если для выполнения некоего скрипта PowerShell нужно, чтобы он был запушен с правами администратора, вы можете прямо в PS коде выполнить проверку на наличие административных привилегий у текущего процесса.
Следующий PowerShell код можно использовать, чтобы проверить, запущён ли текущий скрипт в режиме “Run as Administrator” или нет:
Write-Host "Проверка наличия прав администратора..."
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
[Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Warning "Недостаточно прав для выполнения этого скрипта. Откройте консоль PowerShell с правами администратора и запустите скрипт еще раз"
Break
}
else {
Write-Host "Права администратора есть – продолжить скрипт..." -ForegroundColor Green
}
Сохраните PowerShell код в файл check_perms.ps1 и запустите в консоли без прав администратора:
C:PScheck_perms.ps1
Как вы видите, появилась надпись, что прав администратора нет, поэтому работа PowerShell скрипта прекращена.
Запустите теперь этот скрип в сессии PowerShell с повышенными привилегиями. Как видите, скрипт определил, что данный сеанс PowerShell выполняется с правами администратора.
Также вы можете прямо из скрипта PowerShell запросить повышение привилегий, для этого вместо строки:
Write-Warning "Недостаточно прав”
Используйте следующий код для запуска процесса :
Start-Process Powershell -ArgumentList $PSCommandPath -Verb RunAs
При запуске скрипта без прав администратора, этот скрипт перезапустится в новом привилегированном сеанс PowerShell и появится запрос UAC на повышение привилегий.
Если вы разрешите повышение привилегий, ваш PS1 скрипт будет запущен с правами администратора (путь к текущему файлу скрипта PowerShell передается через переменную окружения $PSCommandPath).
В PowerShell 4.0 и выше еще проще выполнить проверку наличия прав администратора. Для этого нужно использовать директиву –RunAsAdministrator.
#requires -version 4.0
#requires –RunAsAdministrator
Write-Host"PowerShell запущен с правами администратора" -ForegroundColor Green
Если скрипт запущен не под администратором, появится ошибка:
Если запустить это скрип на компьютере с PowerShell v2 появится ошибка:
Для управления Active Directory вам может понадобится другая задача: из скрипта PowerShell нужно проверить, что у текущего пользователя есть права администратора домена. Используйте следующий код:
If(([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole("Domain Admins"))
{
#у пользователь запустившего скрипт есть права Domain Admins
}
Else
{
#нет прав Domain Admins
}
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…