2014-10-03 138 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

相关问题