Тестировать права администратора в скрипте 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".

Другие вопросы по тегам