加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

PowerShell导出服务器本地Administrators组内成员

发布时间:2020-12-15 23:24:17 所属栏目:安全 来源:网络整理
导读:很久没有上过51了,因为时间都花在了追女朋友上面,技术也都快荒废了,前几年一直做基础架构运维的工作,也没有太大的提升,现在转做系统运维了,发现不懂Shell很吃亏,管理几十台服务器的时候,还能用人肉干活,管理上百台,上千台服务器的时候,好铁也打不
很久没有上过51了,因为时间都花在了追女朋友上面,技术也都快荒废了,前几年一直做基础架构运维的工作,也没有太大的提升,现在转做系统运维了,发现不懂Shell很吃亏,管理几十台服务器的时候,还能用人肉干活,管理上百台,上千台服务器的时候,好铁也打不了几颗钉了。 公司有数千台服务器,很多非IT运维人员都可以远程登陆服务器,这样的问题在每个公司多少应该都会存在,来源大概可以分为以下几类: 1.运维制度不健全,任意有管理员权限的人都可以给其它人授予远程访问权限 2.运维人员工作懈怠,给仅需要查看权限的人员授权管理员权限 3.运维不严谨,临时开放的权限,时间久了没有回收,就变成了永久权限 4.历史遗留问题等等 为了降低运维安全风险,决定将不必要的人员远程登陆权限回收,经过分析讨论,公司目前的服务器能够远程登陆的,可以分为这几种权限: 1.域内Domain Admins组内成员 2.域内、本地Remote Desktop组内成员 3.域内、本地Administrators组内成员 域内成员非常容易获取,方法很多,使用Powershell命令也比较方便,一条命令可以搞定,以导出Domain Admins成员为例

Get-ADGroupMember -Identity "domain admins" | Select-Object name,samaccountname | Export-Csv -Encoding utf8 c:logDomainAdminsMember.csv
#导出csv文件的时候,需要增加-Encoding utf8参数,用于导入中文字符
获取本地组内成员的方法也蛮多,以导出Administrators为例,同样使用Powershell
function get-user {
param ($computer)
$groups = Gwmi win32groupuser –computer $computer
$admins = $groups | where-object {$
.groupcomponent –like ‘*"Administrators"‘}
#获取groupcomponent属性与Administrators字符相关的行数
$admins | ForEach-Object{
$.partcomponent –match “.+Domain=(.+),Name=(.+)$” > $nul
#这里使用正则表达式,获取并拿出匹配【.Domain="test",Name="Administrators"】的字符
$
.PSComputerName + “”+$matches[1].trim(‘"‘) + “” + $matches[2].trim(‘"‘)
#去掉分号,并把导出的字符以自己想要呈现的格式组合
}
}

$server_list = Get-Content C:LOGserver.txtforeach ( $hostname in $server_list){if (!(test-connection $hostname -count 1 -quiet)){Write-Output $hostname | Out-File C:LOGadministrator-error.txt -Append}#将无法ping通的服务器记录在一个txt文件中else{get-user -strcomputer $hostname | Out-File C:LOGtestAdministrator-users.txt -Append}#导出Administrators组内的成员}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读