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*
whoami只为我返回了几行,状态和4个权限。我希望得到像“执行批处理作业”的输出,但我觉得这很接近。 – 2014-10-03 19:25:49
如果您没有看到权限,那应该表示它没有被授予执行命令的人。如果你只有四个,那听起来就像是你从一个普通的提示符运行。尝试从提升的提示运行它... – 2014-10-03 19:33:07
这工作,非常感谢 – 2014-10-03 19:48:45