最近因为编程需要,写了两段小代码,一个是获取所有Administrators组的用户,一个是获取所有Administrators组的本地用户。区别就在于是否获取域用户。如果在工作组里面,没有域管理,那两段代码应该返回同样的结果。
欢迎大家测试及指出错误。
获取所有Administrators组的用户:
$group = 'Administrators'
$temp = Get-WmiObject -Query " select * from Win32_GroupUser"
$Admins = ""
foreach ($t in $temp )
{
if ($t.GroupComponent -match $group)
{
$longstr = $t.PartComponent
$namepos = $longstr.IndexOf("Name=") + 6
$Domainpos = $longstr.IndexOf("Domain=") + 8
$Domain = $longstr.Substring($Domainpos, $namepos - $Domainpos - 8)
$name = $longstr.Substring($namepos, $longstr.Length - $namepos -1)
$Admins += "\\" + $Domain + "\" + $name + "`n"
}
}
$Admins
获取本地管理员用户:
$users = gwmi win32_useraccount
$adminusers = ""
for ($counter = 0; $counter -le $users.Count; $counter++)
{
net user $users[$counter].Name | Out-File userinfo.txt
$useri = Get-Content .\userinfo.txt -Raw
if ($useri.Contains("Administrators"))
{
$adminusers += $users[$counter].Name + "`n"
}
}
$adminusers
本文链接: https://www.pstips.net/get-members-of-local-administrator.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
                                      请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

用WMI 来查询相对较慢。
建议使用ADSI来进行查询。
个人逻辑 先看是不是域中电脑。然后再查询域后缀。再判断是不是本地 的。
如果试win7 SP1 及以下电脑,在没有升级PS框架版本的前提,可以使用net localgroup 来进行查询。
如果试win8 .1 及以上可以直接 用get-lcoalgroup 等命令进行配置。要简单很多
get-localgroupmember