检查登录用户在非提升时是否为管理员

Sha*_*aun 3 powershell administrator

我需要检查当前登录的用户是否是管理员,但发现只有使用'net localgroup administrators'才能使AD组成为管理员组的成员.

[编辑:]很容易将管理员权限与特定实例的提升权限混淆,我只想强调这个问题/答案不涉及进程提升状态检查.要求是通常确定登录用户是否是管理员组成员.更常见的是需要确定您的脚本是否以管理员权限运行.如果这是您所需要的,那么请在此处查看:管理权限

在这种特殊情况下,有一个策略禁用管理员共享(排除我之前使用Windows XP测试管理员共享使用\ 127.0.0.1\admin $的技术,以确定当前用户是否为管理员).[/编辑]

下面是我收集和编写的代码,看看登录的用户是否是管理员.

我希望这可以帮助那些需要我做同样事情的人.

如果有人能提供更优雅的解决方案,我们将不胜感激!

Bil*_*art 7

如上所述,本地Administrators组的成员资格不足以确定当前流程是否提升.您可以在PowerShell中测试高程,如下所示:

$elevated = ([Security.Principal.WindowsPrincipal] `
 [Security.Principal.WindowsIdentity]::GetCurrent()
).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
Run Code Online (Sandbox Code Playgroud)


Bil*_*art 7

如果您想确定当前用户是否是本地管理员组的成员(即使未提升权限),这里有一些选项。

$null -ne (whoami /groups /fo csv |
  ConvertFrom-Csv |
  Where-Object { $_.SID -eq "S-1-5-32-544" })
Run Code Online (Sandbox Code Playgroud)

您还可以使用 isadmin.exe ( https://westmesatech.com/?page_id=23 ) 并检查退出代码 2(管理员成员,但未启用,因此未提升)。

  • 我不明白为什么您认为需要转换为字符串或检查“BUILTIN\Administrator”。如果这是“有效”的解决方案,那么您似乎需要更好地解释您要解决的实际问题。 (2认同)