检查用户是否是远程服务器上本地管理员组的成员

时间:2014-02-05 23:17:24

标签: powershell active-directory

用户是AD安全组“Domain \ Sql Admins”的成员,安全组“Domain \ Sql Admins”是Windows Server上本地 Administrators 组的成员。

我尝试过以下PowerShell脚本:

 $u = "Username"; net localgroup administrators | Where {$_ -match $u}

如果用户直接添加到管理员组,则此脚本将仅返回该用户。在找到我的用户之前,是否必须遍历管理组中的所有组?或者还有另一种方式吗?

4 个答案:

答案 0 :(得分:10)

在Microsoft Hey Scripting Guy博客上查看Boe Prox上的这篇文章。他描述了如何检查用户是否是本地管理员。

http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a-powershell-script.aspx

本文指向发布到TechNet图库的Test-IsAdmin函数。

http://gallery.technet.microsoft.com/scriptcenter/1b5df952-9e10-470f-ad7c-dc2bdc2ac946

该函数包含以下代码,该代码返回$true$false

([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")

答案 1 :(得分:2)

使用SID:

([Security.Principal.WindowsIdentity]::GetCurrent().Groups | Select-String 'S-1-5-32-544')

或者使用"众所周知的"安全标识符名称:

([Security.Principal.WindowsIdentity]::GetCurrent().Groups.IsWellKnown('BuiltinAdministratorsSid') -eq $true)

如果您想获取所有SID及其名称,请查看此页:https://support.microsoft.com/en-us/help/243330/well-known-security-identifiers-in-windows-operating-systems

答案 2 :(得分:1)

如果您正在使用PowerShell Community Extension,则可以使用Test-UserGroupMembership命令,例如:

Test-UserGroupMembership Administrators

答案 3 :(得分:1)

PowerShell 5.1(Windows Server 2016)包含Get-LocalGroupMember cmdlet。

$user = "$env:COMPUTERNAME\$env:USERNAME"
$group = 'Administrators'
$isInGroup = (Get-LocalGroupMember $group).Name -contains $user