Тестировать права администратора в скрипте PowerShell?
Какой самый лучший / самый простой способ проверить права администратора в скрипте PowerShell?
Мне нужно написать сценарий, который требует административных прав и хочет знать, как лучше всего его достичь.
5 ответов
Это маленькая функция, которую я имею в модуле безопасности:
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.
#>
}
В Powershell 4.0 вы можете использовать требования в верхней части вашего скрипта:
#Requires -RunAsAdministrator
Выходы:
Сценарий "MyScript.ps1" не может быть запущен, поскольку он содержит оператор "#requires" для запуска в качестве администратора. Текущий сеанс Windows PowerShell не работает от имени администратора. Запустите Windows PowerShell с помощью параметра "Запуск от имени администратора" и попробуйте снова запустить сценарий.
Вот это прямо:
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
[Security.Principal.WindowsBuiltInRole] "Administrator")
К вашему сведению, для тех, у кого установлены расширения сообщества PowerShell:
PS> Test-UserGroupMembership -GroupName Administrators
True
Этот командлет немного более универсален в том смысле, что вы можете проверить членство в группе в любой группе.
Проверьте этот URL: http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script.aspx
Я не тестировал его, но в сводке, по-видимому, указано, что вы ищете: "Узнайте, как проверять учетные данные администратора при запуске сценария или команды Windows PowerShell".