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