用于检查应用程序是不是以提升的权限运行的 PowerShell 命令
Posted
技术标签:
【中文标题】用于检查应用程序是不是以提升的权限运行的 PowerShell 命令【英文标题】:PowerShell command to check whether an application is running with elevated privileges用于检查应用程序是否以提升的权限运行的 PowerShell 命令 【发布时间】:2022-01-15 01:36:10 【问题描述】:我需要一个 PowerShell 命令或脚本来检查我的控制台应用程序是否以管理员身份运行。如果它没有以管理员身份运行,我将停止它并使用脚本再次运行。
如果 PowerShell 命令不可用,还有其他方法可以检查吗?
提前致谢。
【问题讨论】:
这能回答你的问题吗? Check if logged on user is an administrator when non-elevated 另见Running a command as Administrator using PowerShell? 不完全是。我将仅以管理员身份运行脚本。所以不需要检查登录用户。我只是想检查一下应用程序是否以提升的方式运行 scriptimus.wordpress.com/2015/07/19/powershell-test-isadmin 有用吗? @jeff Zeitlin 我想检查特定的应用程序。 【参考方案1】:你可以用我的Test-ProcessElevated
cmdlet(太长了,我已经发到GitHub gist了)。
例如:
# from pipeline:
Get-Process notepad | Test-ProcessElevated
# from parameter:
Test-ProcessElevated $(Get-Process notepad)
# it returns boolean
if (ps notepad | Test-ProcessElevated)
Write-Host 'notepad is running elevated.'
# dwm.exe is running in a different session:
ps dwm | Test-ProcessElevated
我已经在 Windows PowerShell 5 和 PowerShell 7 中对其进行了测试。
【讨论】:
嘿,它正在工作并给出预期的结果。谢谢? 我遇到了一个异常。你能帮帮我吗...使用“1”参数调用“IsProcessElevated”的异常:“OperProcessToken failed”在第 161 行 char:16 返回 [SecurityUtils.Win32]::IsProcessElevated($Process) : NotSpecified : (:) , MethodInvocationException + FullyQualifiedErrorId: Win32Exception + Category Info 记事本没有运行提升。 我刚刚注意到,当我的应用程序以提升的方式运行时,它会抛出此异常。并且在 if 条件下,它仍然给出进程没有以提升的方式运行。 事实证明,即使您是管理员,打开在不同会话中运行的进程也不是一项简单的任务。需要额外的权限。我会调查一下。 @ShivaniG 我已经解决了这个问题。查看更新的脚本:gist.github.com/0xfeeddeadbeef/ce341bbca071099fd6952abab896aaac以上是关于用于检查应用程序是不是以提升的权限运行的 PowerShell 命令的主要内容,如果未能解决你的问题,请参考以下文章