2014-10-03 180 views
0

我試圖在Windows 2003服務器上安裝SQL Server 2008 R2。我嘗試創建一個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個權限。我希望得到像「執行批處理作業」的輸出,但我覺得這很接近。 – 2014-10-03 19:25:49

+0

如果您沒有看到權限,那應該表示它沒有被授予執行命令的人。如果你只有四個,那聽起來就像是你從一個普通的提示符運行。嘗試從提升的提示運行它... – 2014-10-03 19:33:07

+0

這工作,非常感謝 – 2014-10-03 19:48:45

相關問題