Как проверить права администратора в скрипте PowerShell?

Если для выполнения некоего скрипта 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

Если скрипт запущен не под администратором, появится ошибка:

The script ‘check_perms.ps1’ cannot be run because it contains a «#requires» statement for running as Administrator. The current Windows PowerShell session is not running as Administrator. Start Windows PowerShell by using the Run as Administrator option, and then try running the script again.
At line:1 char:1
+ C:PScheck_perms.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (check_perms.ps1:String) [], ScriptRequiresException
+ FullyQualifiedErrorId : ScriptRequiresElevation

Если запустить это скрип на компьютере с PowerShell v2 появится ошибка:

Cannot process the «#requires» statement at line 2 because it is not in the correct format.
The «#requires» statement must be in one of the following formats:
«#requires -shellid <shellID>»
«#requires -version <major.minor>»
«#requires -pssnapin <psSnapInName> [-version <major.minor>]»

Для управления Active Directory вам может понадобится другая задача: из скрипта PowerShell нужно проверить, что у текущего пользователя есть права администратора домена. Используйте следующий код:

If(([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole("Domain Admins"))
{
#у пользователь запустившего скрипт есть права Domain Admins
}
Else
{
#нет прав Domain Admins
}

admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago