PowerShell获取管理员组成员的方法 2


最近因为编程需要,写了两段小代码,一个是获取所有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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

2 条评论 “PowerShell获取管理员组成员的方法

  • guijunhua

    用WMI 来查询相对较慢。
    建议使用ADSI来进行查询。

    个人逻辑 先看是不是域中电脑。然后再查询域后缀。再判断是不是本地 的。

    如果试win7 SP1 及以下电脑,在没有升级PS框架版本的前提,可以使用net localgroup 来进行查询。
    如果试win8 .1 及以上可以直接 用get-lcoalgroup 等命令进行配置。要简单很多