2014-10-03 7 views
0

Я пытаюсь установить SQL Server 2008 R2 на сервер Windows 2003. Я пытаюсь создать сценарий PowerShell, который проверяет, имеет ли пользователь права Windows (право отладки программы и т. Д.), Или если у него нет этого конкретного права, если он находится в группе, которая имеет это право. Если это удастся, тогда он запускает средство проверки конфигурации системы, которое включено в установщик 2008 года. Мне трудно найти подходящие примеры этого. Возможно ли это в PowerShell?Проверьте, есть ли у пользователя определенные права Windows Powershell

ответ

0

whoami.exe /priv может показывать эту информацию, так что бы вы хотели разобрать ее выход? Может быть, это функция, как это (я уверен, что я более усложняя):

function Get-PrivilegeState { 
    [CmdletBinding()] 
    param(
     [string[]] $PrivilegeName = "*" 
    ) 

    $WhoAmI = whoami.exe /priv 

    foreach ($PrivilegeSearch in $PrivilegeName) { 
     $RegEx = "^(?<privilege>{0})\s+.*?\s+(?<state>Enabled|Disabled)" -f ($PrivilegeSearch -replace '\*', '[A-z]*') 
     $WhoAmI -match $RegEx | ForEach-Object { 
      if ($_ -match $RegEx) { 
       $FinalPrivilegeName = $Matches.privilege 
       $State = $Matches.state 

       New-Object psobject -Property @{ 
        PrivilegeName = $FinalPrivilegeName 
        State = $State 
       } 
      } 
     } 
    } 
} 

Если пользователь не имеет привилегий, то функция ничего не вернется. Вот как можно проверить для конкретной привилегии (это не дает права, я предполагаю, что приложение вам нужно будет делать это автоматически, если привилегия была предоставлена):

if (Get-PrivilegeState SeRestorePrivilege) { 
    # Privilege exists 
    "Do something here" 
} 
else { 
    Write-Error "Missing privilege" 
} 

А вот еще несколько примеры использования команды:

# Get all granted privileges 
Get-PrivilegeState 

# Use wildcards: 
Get-PrivilegeState *system* 
+0

whoami только вернул несколько строк для меня, состояния и 4 привилегий. Я надеялся получить выход, например, «Выполнять пакетные задания». Я чувствую, что это близко. –

+0

Если вы не видите эту привилегию, это должно означать, что она не была предоставлена ​​тому, кто выполняет команду. Если вы получаете только четыре, это звучит так, как будто вы работаете из обычного приглашения. Попробуйте запустить его с повышенной подсказки ... –

+0

Это сработало, спасибо большое –