最近因为编程需要,写了两段小代码,一个是获取所有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