[玩转系统] 如何获取计算机上的本地管理员列表?
作者:精品下载站 日期:2024-12-15 00:51:50 浏览:46 分类:玩电脑
如何获取计算机上的本地管理员列表?
在本文中,我们将了解如何获取对网络上的 Windows 工作站和服务器具有本地管理员权限的用户和组的列表。
在本地计算机上查找本地管理员
在 Windows 中,您可以使用计算机管理管理单元 (
compmgmt.msc
) 查看、添加或删除本地管理员组中的用户。展开计算机管理 -> 本地用户和组 -> 组。然后选择管理员组。
默认情况下,当 Windows 计算机加入 Active Directory 域时,系统会向本地管理员用户和域管理员安全组授予管理员权限。
所有其他用户或组都单独添加到管理员组(手动、通过组策略、脚本等)。
您可以使用内置 Microsoft.PowerShell.LocalAccounts 模块中的 Get-LocalGroupMember cmdlet 来列出本地管理员组的成员:
Get-LocalGroupMember -Group "Administrators"
请注意,Principal 参数包含此用户/组的源,可以是本地、Active Directory 或 Azure AD 域。
您可以通过以下方式仅列出具有管理员权限的本地用户:
Get-LocalGroupMember Administrators | Where-Object { (Get-LocalUser $_.SID -ErrorAction SilentlyContinue).Enabled }
您可以过滤列表以仅包含 AD 用户:
Get-LocalGroupMember Administrators | Where-Object {$_.PrincipalSource -eq "ActiveDirectory"} | select PrincipalSource,class,name,SID
如果您的计算机上安装了 RSAT 包中的 Active Directory for Windows PowerShell 模块,您可以通过 AD 用户或组的 SID 获取有关 AD 用户或组的其他信息。
在此示例中,脚本查找此计算机上作为本地管理员的所有 Active Directory 组的成员(Get-ADGroupMember cmdlet 用于获取 AD 组用户的列表)。然后使用 Get-ADUser 来获取 SamAccountName 和帐户的状态
Enabled = True/False
$admins=Get-LocalGroupMember Administrators | Where-Object {$_.PrincipalSource -eq "ActiveDirectory"} Foreach ($admin in $admins) { If ($admin.objectclass -eq "User") {get-aduser $admin.sid|select SamAccountName,enabled } If ($admin.objectclass -eq "Group") {Get-ADGroupMember $admin.sid | foreach { Get-ADUser $_ |Select-Object SamAccountName,enabled }} }
同样,您可以从 Active Directory 获取任何其他用户属性。
从远程计算机获取本地管理员组成员
上面的示例获取本地计算机上具有管理员权限的用户列表。现在让我们看看如何从远程 Windows 计算机获取本地管理员组的成员。
要在远程计算机上运行命令,您必须配置 PowerShell Remoting 并打开 TCP 5985 防火墙端口。您可以使用 GPO 启用和配置 WinRM (PSRemoting),然后更改 Windows Defender 防火墙组策略设置以打开其他端口。
使用 Invoke-Command PowerShell cmdlet 在远程计算机上运行命令。要列出名为 wsk-m2211 的远程计算机上的管理员,请使用以下命令:
Invoke-Command -ComputerName wsk-m2211 -ScriptBlock {Get-LocalGroupMember -Name 'Administrators'|select Name,ObjectClass,PrincipalSource|ft}
现在让我们看看如何从多台计算机获取管理员列表。为方便起见,我们将从结果中排除域管理员组:
$results = Invoke-Command wsk-m2211,srv-sql01,srv-rds02 -ScriptBlock {Get-LocalGroupMember -Name 'Administrators'|where {$_.name -notlike "*Domain Admins*"}|select Name,ObjectClass,PrincipalSource} $results | Select-Object PSComputerName,Name,ObjectClass,PrincipalSource
您可以从结果中排除内置管理员或其他帐户。
使用 Export-CSV 命令将生成的用户和组列表导出到 CSV 文件:
$results | Export-CSV "C:\PS\admins.CSV" -NoTypeInformation -Encoding UTF8
您可以同时查询一个域中的多台计算机或服务器。在此示例中,我想要获取 AD 中所有 Windows Server 主机上的管理员列表。使用 Get-ADComputer cmdlet 列出 Active Directory 中启用的 Windows Server 计算机:
$computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"').Name
接下来,获取每个主机上的本地管理员组成员列表:
$results = Invoke-Command -ComputerName $computers -ScriptBlock {Get-LocalGroupMember -Name 'Administrators'|where {$_.name -notlike "*Domain Admins*"}|select Name,ObjectClass,PrincipalSource} -ErrorAction SilentlyContinue
从本地管理员组中删除用户
对于企业管理员来说,跟踪域计算机上本地管理员组的成员非常重要。主要思想是最大限度地减少具有本地管理员权限的用户数量。
建议您使用组策略首选项或受限组自动将用户添加到本地管理员组。这些 GPO 会自动将所需的用户添加到管理员组,并排除所有其他用户(手动添加)。
您可以使用以下命令手动从本地管理员组中删除用户:
Remove-LocalGroupMember -Group Administrators -Member username
您可以从远程计算机上的组中删除用户:
Invoke-Command -ComputerName wsk-m2211 -ScriptBlock {Remove-LocalGroupMember -Group Administrators -Member username}
但是,您可以使用一种更高级的方法。假设您已经创建了对计算机具有管理权限的用户列表,并将其保存在 $results 变量中。
$results = Invoke-Command wsk-m2211,wsk-m2233 -ScriptBlock {Get-LocalGroupMember -Name 'Administrators'|where {$_.name -notlike “*Domain Admins*”}|select Name,ObjectClass,PrincipalSource,SID}
然后以 Out-GridView 列表的形式显示用户和计算机的列表:
$principals_to_remove=$results | Out-GridView -Title "Select principal to remove from local admins" -OutputMode Multiple
接下来您要做的就是选择要从管理员组中删除的用户(按住CTRL以选择表中的多行)并运行代码:
foreach ($principal in $principals_to_remove) { Invoke-Command $principal.PSComputerName -ScriptBlock {Remove-LocalGroupMember -Group Administrators -Member $using:principal.name} }
注意。这
$using:principal.name
构造允许您将本地变量值从计算机传递到远程 PSRemoting 会话。
这将从远程计算机上的本地管理员组中删除您选择的用户。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[软件合集] 25年5月31日 精选软件66个
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[韩剧] 宝物岛/宝藏岛/金银岛(2025)【全16集】【朴炯植/悬疑】
[电影] 愤怒的牦牛 (2025) 国语中字 4k
[短剧合集] 2025年05月30日 精选+付费短剧推荐56部
[软件合集] 25年5月30日 精选软件26个
[软件合集] 25年5月29日 精选软件18个
[短剧合集] 2025年05月28日 精选+付费短剧推荐38部
[软件合集] 25年5月28日 精选软件37个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag