1

想象有一个 Powershell 脚本在 Windows 10 机器上的 SYSTEM 帐户下运行,并检查当前登录的域用户。没什么大不了。

现在:我想检查这个登录的用户是否在这台机器上有管理员权限。到目前为止,我能找到的每一项检查都只查看“.IsInRole([Security.Principal.WindowsBuiltInRole]::'Administrator')”。但这仅检查用户是否是本地组“管理员”的直接成员。但是可能在本地管理员组中有一个域组,而用户是该域组的成员。所以他是管理员,即使他不是管理员组的直接成员。

如何同时检查两者?我只想检查某人是否是管理员,无论这些管理员权限来自何处。此检查还将在 SYSTEM 帐户下运行,而不是在受影响的用户帐户本身下运行。

有任何想法吗?

4

1 回答 1

0

如果域组是本地管理员组的一部分,那么按照设计,该域组中的所有用户都是本地管理员,并拥有所有权限和特权。因此,该代码块仍然适用。

您必须明确检查分配的用户权限和特权。此内置没有 cmdlet,因此您必须为其编写代码。要查看您的权利和特权,您可以使用旧的whoami.exe ...

whoami /priv

# Results
<#
PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                          State
============================= ==================================== ========
SeShutdownPrivilege           Shut down the system                 Disabled
SeChangeNotifyPrivilege       Bypass traverse checking             Enabled
SeUndockPrivilege             Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled
SeTimeZonePrivilege           Change the time zone                 Disabled
#>

...然后将其与通常用于管理操作的 Windows 权限列表进行比较。

以登录用户身份远程运行此操作,不能使用 PowerShell 本地完成,它是 Windows 安全边界,因此,您需要 MS SysInternals 的 PSExec.exe 之类的东西来尝试。

于 2020-02-01T23:57:36.690 回答