[个人笔记] 域用户登录自动记录计算机名称到备注栏

Windows Server - 运维篇


系列文章回顾

第一章 域控使用CMD和PowerShell操作域用户



下章内容

第三章 WinSrv批量添加DNS记录和条件转发器记录


域用户登录自动记录计算机名称到备注栏

前言

内网使用多分支架构部署了域控,并分发给每个域控拥有可写权限。由于加域的计算机账号的命名无规律且未制定命名规范,导致域用户无法跟计算机账号一一对应,无法达到用户与计算机的一致性。
现决定采用域用户登录脚本(VBS脚本)来自动收集用户登录的计算机信息,自动写入属性到域用户和计算机账号里,使之拥有对应关系,方便IT运维人员后续的疑难解答。写入属性如下列表

写入属性1写入属性2写入属性3写入属性4
域计算机账号(Computer)域PC的描述,格式如"Login PC: PCXXX | xxxx/xx/xx xx:xx:xx"
字段:Description
PC的序列号,从bios信息中获取
字段:SerialNumber
IP地址和MAC地址,从网卡中获取,格式如"x.x.x.x/ff:ff:ff:ff:ff:ff"
字段:ipHostNumber
位置,根据IP地址可得,格式如"DC01/Site01"
字段:info
域用户(User)域用户的描述,格式如"XXX@samid | xxxx/xx/xx xx:xx:xx"
字段:Description

前置条件

  1. 内网已部署AD域控服务、DNS服务。
  2. AD DS的组策略服务正常运行。

实施步骤

1. 给域用户所属OU添加字段的可写权限
2. 给域计算机所属OU添加字段的可写权限
3. 编写域用户登录使用的VBS脚本
4. Default Domain Policy应用VBS登录脚本
5. 利用PowerShell合并查询域User和域PC的关联列表


给域用户所属OU添加字段的可写权限

1
2

先全部清除之后再勾选属性
3

“写入描述”
4



给域计算机所属OU添加字段的可写权限

5
6

先全部清除之后再勾选属性
7

“写入描述”,“写入info”,“写入ipHostNumber”,“写入SerialNumber”
8
9
10



编写域用户登录使用的VBS脚本

WriteADUserInfo.vbs

REM Copyright @ 2022 wendr.top
REM Author: ww1372247148@163.com

On Error Resume Next
Set objSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject("LDAP://" & objSysInfo.ComputerName)
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
Set objWMI = GetObject("winmgmts:\\")
If objUser.CN <> "" Then
    Set IPConfigSet = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
    IpAddr = ""
    MACAddr = ""
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then
            For i = LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
                If Left(IPConfig.IPAddress(i),4) <> "fe80" Then			
                    IpAddr = IpAddr & IPConfig.IPAddress(i) & ","
                    MACAddr = MACAddr & IPConfig.MACAddress & ","			
                    End If
            Next
        End If
    Next
    IpAddr = Split(IpAddr,",")(0)
    MACAddr = Split(MACAddr,",")(0)

    objComputer.Description = objUser.CN & Chr(64) & objUser.sAMAccountName & Chr(32) & Chr(124) & Chr(32) & date & Chr(32) & time
    objComputer.SetInfo
    objUser.Description = "Login PC: " & objComputer.CN & Chr(32) & Chr(124) & Chr(32) & date & Chr(32) & time
    objUser.SetInfo

    objComputer.ipHostNumber = IpAddr & Chr(47) & MACAddr
    objComputer.SetInfo
    Select Case Left(IpAddr,5)
        Case "172.16" ' Site01
        	objComputer.info = "DC01/Site01"
            objComputer.SetInfo
        Case "172.17" ' Site02
            objComputer.info = "DC01/Site02"
            objComputer.SetInfo
        Case "172.18" ' Site03
            objComputer.info = "DC01/Site03"
            objComputer.SetInfo
        Case Else ' is 192.168 ?
            If Left(IpAddr,6) = "192.168" Then ' DC02/Site01
                objComputer.info = "DC02/Site01"
                objComputer.SetInfo
            End If
    End Select

    Set BIOSSet = objWMI.instancesof("win32_bios")
    For Each BIOS In BIOSSet
        objComputer.serialNumber = BIOS.SerialNumber
        objComputer.SetInfo
        Exit For
    Next
End If

Set objUser = Nothing
Set objComputer = Nothing
Set objSysInfo = Nothing
Set objWMI = Nothing
Wscript.Quit


Default Domain Policy应用VBS登录脚本

编辑Default Domain Policy的GPO,【用户配置】 / 【策略】 / 【Windows 设置】 / 【脚本(登录/注销)】 / 【登录】
【显示文件】把VBS脚本复制到该路径
11

注意事项:
Domain Admins用户组的默认权限是不应用组策略,已添加过Domain Admins的域用户可能会应用到Domain Users的权限,但Domain Admins的优先级更高,可能会不生效。需在Default Domain Policy组策略的委派里把Domain Admins组的权限添加"应用组策略"。并取消"写入"权限(避免Domain Admins组用户执行修改)

12



利用PowerShell合并查询域User和域PC的关联列表

Get-ADUser

### Format-Table 查询
Get-ADUser -Filter "Description -like 'Login*'" -Properties Description | ft SamAccountName,Description

SamAccountName Description
-------------- -----------
samid01         Login PC: PC001 | 2022/xx/xx x:xx:xx
samid02         Login PC: PC002 | 2022/xx/xx x:xx:xx
...

### Format-List 查询
Get-ADUser -Filter "Description -like 'Login*'" -Properties Description | fl SamAccountName,Description

SamAccountName : samid01
Description    : Login PC: PC001 | 2022/xx/xx x:xx:xx

SamAccountName : samid02
Description    : Login PC: PC002 | 2022/xx/xx x:xx:xx
...

Get-ADComputer

### Format-Table 查询
Get-ADComputer -Filter "Description -like '*@*'" -Properties Description,SerialNumber,ipHostNumber,info | ft Description,SerialNumber,ipHostNumber,info

Description                                   SerialNumber             ipHostNumber                       info
-----------                                   ------------             ------------                       ----
用户A1@samid01 | 2022/xx/xx x:xx:xx     {XXXXXXXXXXXXXXXXXX}    {172.16.0.1/FF:FF:FF:FF:FF:FF}  DC01/Site01
...

### Format-List 查询
Get-ADComputer -Filter "Description -like '*@*'" -Properties Description,SerialNumber,ipHostNumber,info | fl Description,SerialNumber,ipHostNumber,info

Description  : 用户A1@samid01 | 2022/xx/xx x:xx:xx
SerialNumber : {XXXXXXXXXXXXXXXXXX}
ipHostNumber : {172.16.0.1/FF:FF:FF:FF:FF:FF}
info         : DC01/Site01
...

### 去除属性字段, 过滤域PC对应的域CN和域User, 按Format-List 查询
Get-ADComputer -Filter "Description -like '*@*'" -Properties Description,SerialNumber,ipHostNumber,info | ForEach {
$_.Description.Split(" |")[0],$_.SerialNumber,$_.ipHostNumber,$_.info,""}

用户A1@samid01
XXXXXXXXXXXXXXXXXX
172.16.0.1/FF:FF:FF:FF:FF:FF
DC01/Site01
...


参考来源

  1. 使用组策略和vbs脚本实现域用户首次登录绑定计算机并获取域计算机当前登录的用户信息
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

歪果仨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值