询问者
再次请教——如何利用PowerShell、VBS脚本或者其他命令行工具,获取域内正在登录的域用户名、主机名和主机IP地址

问题
-
再次请教——如何利用PowerShell、VBS脚本或者其他命令行工具,获取域内正在登录的域用户名、主机名和主机IP地址
搜索一下关键词就能看之前论坛中相关的帖子:
如何用命令查看域用户登陆的计算机
如何在使用PowerShell脚本或者VBS脚本,查看域内正在登录的域用户名、主机名和主机IP地址
==============================================================================
论坛中以上帖子都提到该脚本
==============================================================================
strDomainName = InputBox ("Please enter the internal Domain Name:","Script for getting current logged username","yourdomain.local")
arrDomLevels = Split(strDomainName, ".")
strADsPath = "dc=" & Join(arrDomLevels, ",dc=")
Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"'
Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select Name, Location from 'LDAP://"&strADsPath&"' " _
& "Where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set of = oFSO.CreateTextFile("LoggedUser.txt", True, True)
Do Until objRecordSet.EOF
On Error Resume Next
sPC = objRecordSet.Fields("Name").Value
of.writeline " "
of.writeline "Machine Name: "&sPC
Set objWMILocator = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & sPC & "\root\cimv2")
If Err = 0 Then
Set col = objWMILocator.ExecQuery _
("Select * from win32_computersystem")
For Each item In col
of.writeline "Logged User: "&item.username
Next
Set col = Nothing
Else
of.writeline "!!! Cant connect to "&sPC&" !!!"
End If
objRecordSet.MoveNext
Loop
of.close
MsgBox "Done! Cheers!"
==============================================================================
我在2008R2上执行该VBS脚本能运行成功,但好像不能获取全部登录用户,只能获取管理员(AD上登录的用户的相关信息),具体执行结果如下(即LoggedUser.txt里面的内容)
==============================================================================
Machine Name: 2008R2
Logged User: 2008R20\administrator
Machine Name: DM-WIN7
!!! Cant connect to DM-WIN7 !!!
Machine Name: DM-WIN10
!!! Cant connect to DM-WIN10 !!!
Machine Name: WIN7
!!! Cant connect to WIN7 !!!
Machine Name: WIN10
!!! Cant connect to WIN10 !!!
==============================================================================
从以上结果看,似乎没有达到获取域内所有正在登录的与用户、主机名的目的,当我执行该VBS脚本时,我的环境内至少还有三台其他的计算机使用三个不同的用户登录到该域,可结果中并没显示,不知道是不是我执行有问题、还是我的环境的原因,我看不懂上面的脚本每行的作用,不知道问题出在哪里,能否帮我分析分析我的需求,要如何解决,如何达到我的目的???
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
在以下帖子中"Andy_Pan(MSFT CSG)"又提到了一个powershell脚本,我之后的结果如下
帖子:::搜索一下关键词就能看之前论坛中相关的帖子
如何在使用PowerShell脚本或者VBS脚本,查看域内正在登录的域用户名、主机名和主机IP地址
执行结果:::
C:\Users\Administrator\Desktop>powershell.exe -ExecutionPolicy Bypass -File test.ps1
2008R20\administrator ip&mac: logged on since: 01/30/2018 11:24:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
==============================================================================
从结果看似乎该脚本也没有达到预期的目的!在此再次请教————如何利用PowerShell、VBS脚本或者其他命令行工具,获取域内正在登录的域用户名、主机名和主机IP地址,同时请问,该动作可以不在域控上执行吗??可以在域内非域控计算机上执行吗??
非常感谢!!!
全部回复
-
你好,
在technet的脚本库里有符合你要求的脚本,请参阅下面的链接
https://gallery.technet.microsoft.com/Get-LoggedOnUser-Gathers-7cbe93ea#content
Best Regards,
FrankPlease remember to mark the replies as an answers if they help.
If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com- 已建议为答案 frank_songMicrosoft contingent staff, Moderator 2018年2月12日 9:41
-
请问您的问题解决了吗? 如果您使用我们的方案解决问题,请“将其标记为答案”,以帮助其他社区成员快速找到有用的回复。 如果您使用自己的方案解决问题,请在此处分享您的经验和解决方案。 对于有类似问题的其他社区成员也是非常有帮助的。 如果没有,请回复并告诉我们目前的情况,以提供进一步的帮助。
Best Regards,
Frank
Please remember to mark the replies as an answers if they help.
If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com