Как я могу определить в своих сценариях, работает ли PowerShell с правами администратора?
Мне нужно знать, потому что я пытаюсь запустить программу, которая требует возможности открывать защищенные порты.
powershell
Бумеранг
источник
источник
Ответы:
Разбивая, что это делает:
[bool]
- Привести конечный результат кbool
.[System.Security.Principal.WindowsIdentity]::GetCurrent()
- ПолучаетWindowsIdentity
для текущего работающего пользователя.(...).groups
- Доступ кgroups
свойству удостоверения, чтобы узнать, к каким группам пользователей принадлежат удостоверения.-match "S-1-5-32-544"
проверяет,groups
содержит ли общеизвестный SID группы «Администраторы», удостоверение будет содержать его, только если использовался «запуск от имени администратора».источник
-match
и[Security.Principal.WindowsIdentity]::GetCurrent().Groups -contains 'S-1-5-32-544'
Это извлекает текущую идентификацию Windows и возвращает True, если текущая идентификация имеет роль администратора (т. Е. Выполняется с повышенными правами).
источник
В Powershell 4.0 вы можете использовать требования в верхней части вашего скрипта:
Выходы:
источник
return
если пользователь не является администратором :)#Requires -RunAsAdministrator
это полезно: он предотвращает запуск всего скрипта, если вы не повышены.