我正在尝试在Windows 2003服务器上安装SQL Server 2008 R2。我尝试创建一个PowerShell脚本,检查用户是否具有Windows权限(调试程序的权利等),或者如果他没有该特定权限,如果他在具有该权限的组中。如果成功,则运行2008安装程序中包含的系统配置检查程序。我很难找到这样做的相关例子。这是PowerShell中的可能吗?
答案 0 :(得分: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*