Тестировать права администратора в скрипте PowerShell? - PullRequest
18 голосов
/ 03 апреля 2012

Какой самый лучший / самый простой способ проверить права администратора в скрипте PowerShell?

Мне нужно написать скрипт, который требует административных прав и хочет знать, как лучше всего его достичь.

Ответы [ 5 ]

22 голосов
/ 03 апреля 2012

Это небольшая функция, которую я имею в модуле безопасности:

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.
    #>
}
17 голосов
/ 19 марта 2015

В Powershell 4.0 вы можете использовать требует вверху вашего скрипта:

#Requires -RunAsAdministrator

Выходы:

Сценарий «MyScript.ps1» не может быть запущен, поскольку он содержит оператор «#requires» для работает в качестве администратора. Текущий сеанс Windows PowerShell не работает от имени администратора. Запустите Windows PowerShell с помощью параметра «Запуск от имени администратора», а затем попробуйте снова запустить сценарий.

4 голосов
/ 04 апреля 2012

К вашему сведению, для тех, у кого установлены Расширения сообщества PowerShell :

PS> Test-UserGroupMembership -GroupName Administrators
True

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

3 голосов
/ 25 октября 2013

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

$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
        [Security.Principal.WindowsBuiltInRole] "Administrator")
2 голосов
/ 03 апреля 2012

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

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

...