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

Ree*_*ley 5 powershell active-directory

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

我尝试了以下PowerShell脚本:

 $u = "Username"; net localgroup administrators | Where {$_ -match $u}
Run Code Online (Sandbox Code Playgroud)

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

Tre*_*van 10

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

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

本文指向Test-IsAdmin发布到TechNet库的功能.

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")
Run Code Online (Sandbox Code Playgroud)


Der*_*ter 8

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

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