Gar*_*ett 26 security remote-access logon-scripts active-directory user-management
我希望在 Active Directory 的某个地方写入/存储“最后一次从 [计算机] 登录”,或者有一个我可以解析的日志?
想知道最后登录的 PC 的目的是通过网络提供远程支持 - 我们的用户很少四处走动,但我想知道我正在咨询的任何内容都在那天早上更新(当他们登录时) ,大概)至少。
我也在考虑将用户名和计算机名写入我可以参考的已知位置的登录脚本,但我们的一些用户不喜欢一次注销 15 天。
如果有一个使用登录脚本的优雅解决方案,一定要提到它——但如果它恰好适用于解锁站,那就更好了!
Joh*_*ers 27
作为我们登录脚本的一部分,我将这些信息(以及更多信息)登录到服务器上的隐藏共享中,每个用户有一个日志文件。注销脚本将用户注销的时间添加到同一日志文件中。易于设置,无需成本,信息以易于阅读的格式提供。
Tha*_*Guy 11
我们通过登录脚本执行此操作,该脚本更新 AD 中计算机对象的描述。
您需要执行自定义控制委派以允许“经过身份验证的用户”编写域中计算机对象的描述属性。
完成后,您所需要的只是一个脚本,它可以生成您想要的任何信息并将属性写入计算机对象。然后通过链接到域的组策略对象将此脚本指定为登录脚本。
我们在描述字段中输入时间戳、用户名、IP。时间戳是第一位的,因为它可以通过对描述字段进行排序来轻松快速地查看“旧”计算机对象。
如果您想将其用作起点,这是我为此编写的脚本:
On Error Resume Next
Set objSysInfo = CreateObject("ADSystemInfo") 'Bind to AD
Set objNet = CreateObject("WScript.Network")
strCompDN = objSysInfo.ComputerName 'DN for computer, e.g. "CN=VISTAWORKSTATION,OU=Child OU Name,OU=Parent OU Name,DC=domain,DC=com"
Set objComp = GetObject("LDAP://" & strCompDN) 'IADsComputer object
strUserDN = objSysInfo.UserName 'DN for user, e.g. "CN=John Smith,OU=Child OU Name,OU=Parent OU Name,DC=domain,DC=com"
Set objUser = GetObject("LDAP://" & strUserDN) 'IADsUser object
strUsrLogin = LCase(objNet.UserName)
strNow = Now
strDateStamp = DatePart("yyyy",strNow) & _
Right("0" & DatePart("m",strNow), 2) & _
Right("0" & DatePart("d",strNow), 2) & _
"@" & _
Right("0" & DatePart("h",strNow), 2) & _
Right("0" & DatePart("n",strNow), 2)
'RegExp object used to perform a simple match on IP address
Set objRE = New RegExp
objRE.IgnoreCase = True
'Note this regexp pattern isn't "correct" for matching an IPv4 address properly, but since WMI will return an
'array of IP addresses, this is sufficient to distinguish IPv4 vs IPv6
objRE.Pattern = "^\d+\.\d+\.\d+\.\d+$"
strIP = ""
'Connect to WMI and retreive all network adapters
Set objWMI = GetObject("winmgmts:")
Set colNICs = objWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration")
'Get the IP(s) assigned to whichever network adapter has our default gateway
If colNICs.Count > 0 Then
For Each objNIC in colNICs
If IsArray(objNIC.DefaultIPGateway) Then
arrIP = objNIC.IPAddress
For i = 0 To UBound(arrip)
If objRE.Test(arrIP(i)) Then strIP = strIP & " " & arrIP(i)
Next
strMAC = objNIC.MACAddress
End If
Next
End If
strIP = Trim(strIP)
objComp.Description = strDateStamp & " " & strUsrLogin & " " & strIP
objComp.Put "extensionAttribute1", strUsrLogin
objComp.Put "extensionAttribute2", strIP
objComp.Put "extensionAttribute3", strMAC
objComp.SetInfo
Run Code Online (Sandbox Code Playgroud)
小智 6
出于类似的原因,我不得不达到相同的结果;以某种方式确定特定用户从哪台机器登录。我想知道“事前”,并且无法如上所述更改用户登录脚本。
我在用户进行身份验证的 DC 上使用了 powershell 来解析安全事件日志:
get-eventlog "Security" | where {$_.Message -like "*Username*" -AND "Source Network Address"} | export-csv C:\Temp\test.csv
使用 excel 或您最喜欢的编辑器打开 .csv 并查找在同一事件中同时显示帐户名(用户名)和源网络地址的最新条目。
这可能不是 100% 可靠的解决方案(取决于 DHCP 租用时间等),但它对我有用。
| 归档时间: |
|
| 查看次数: |
307699 次 |
| 最近记录: |