Проверить права администратора в PowerShell script?
Какой лучший/простой способ проверить права администратора в PowerShell script?
Мне нужно написать script, который требует административных прав и хочет знать, как наилучшим образом его достичь.
Ответы
Ответ 1
Это небольшая функция, которую я имею в модуле безопасности:
function Test-IsAdmin {
try {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object Security.Principal.WindowsPrincipal -ArgumentList $identity
return $principal.IsInRole( [Security.Principal.WindowsBuiltInRole]::Administrator )
} catch {
throw "Failed to determine if the current user has elevated privileges. The error was: '{0}'." -f $_
}
<#
.SYNOPSIS
Checks if the current Powershell instance is running with elevated privileges or not.
.EXAMPLE
PS C:\> Test-IsAdmin
.OUTPUTS
System.Boolean
True if the current Powershell is elevated, false if not.
#>
}
Ответ 2
В Powershell 4.0 вы можете использовать требуется в верхней части вашего script:
#Requires -RunAsAdministrator
Выходы:
script 'MyScript.ps1' не может быть запущен, потому что он содержит оператор #requires для работает как администратор. Текущий сеанс Windows PowerShell не работает как администратор. Запустить Windows PowerShell с помощью параметра "Запуск от имени администратора", а затем снова запустить script.
Ответ 3
FYI, для тех, у кого есть Расширения сообщества PowerShell:
PS> Test-UserGroupMembership -GroupName Administrators
True
Этот командлет является более общим, поскольку вы можете тестировать членство в группе в любой группе.
Ответ 4
Здесь это прямо:
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
[Security.Principal.WindowsBuiltInRole] "Administrator")
Ответ 5
Проверьте этот URL: http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script.aspx
Я не тестировал его, но в сводке указано, что вы ищете: "Узнайте, как проверить учетные данные администратора при запуске Windows PowerShell script или команды."