Проверить права администратора в сценарии 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 с помощью параметра Запуск от имени администратора, а затем повторите попытку запуска сценария.


FYI, для тех людей, у которых есть Расширения Сообщества PowerShell установлено:

PS> Test-UserGroupMembership -GroupName Administrators
True

этот командлет является более общим, так как его можно проверить на членство в любой группе.


вот это прямо:

$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
        [Security.Principal.WindowsBuiltInRole] "Administrator")

проверьте этот url: http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script.aspx

Я не тестировал его, но в сводке, похоже, указано, что вы ищете: "узнайте, как проверить учетные данные администратора при запуске сценария или команды Windows PowerShell."