是否有工具、脚本或其他方式可以知道特定用户当前登录到的计算机名称?或者曾经登录过?
假设用户“HRDrone”正在其主机名是“HRStation01”的机器上工作。
我坐在系统管理员的办公桌前,只知道用户名是“HRDrone”。有什么方法可以让我不用询问用户就能知道他是否登录了“HRStation01”?AD 事件查看器?什么方法?
谢谢!
答案1
有一个很棒的 Sysinternals 实用程序可以为你做到这一点 -登入
答案2
我经常使用的一个廉价技巧是查看“计算机管理”控制台中“共享文件夹”下列出的“会话”,该控制台针对的是文件服务器计算机,我知道主题用户将拥有“映射”的“驱动器”。
答案3
将这些作为用户登录脚本放入bat文件中,运行它,你会看到乐趣
mkdir %username%
pushd %username%
net config workstation > %computername%.txt
或者如果您需要详细信息
mkdir %username%
pushd %username%
@echo off
echo
echo I am logged on as %UserName%. >> %username%\%computername%.txt
echo My computer's name is %ComputerName%. >> %computername%.txt
echo %Date% >> %computername%.txt
echo %Time% >> %computername%.txt
echo My IP settings are >> %computername%.txt
ipconfig | find "." | find /i /v "suffix" >> %computername%.txt
getmac >> %computername%.txt
echo\
如果你需要的话,你可以联系我获取更多脚本,这对我也是一个很好的学习
答案4
我必须解决这个问题才能在整个公司范围内提供远程支持。事实证明,PsLoggedOn 之类的工具以及用于扫描域控制器安全日志的工具对于我的目的(获取主机名以对用户进行远程支持)来说太慢了。以下是我想出的办法:
- 所有用户都有一个映射到 X: 的驱动器,位于 AD 中的配置文件 - 主文件夹下
- 每个人都在配置文件 - 登录脚本下分配了以下脚本
该脚本将他们登录的计算机记录在他们的主文件夹中。它特别不记录他们登录我们的终端服务器,因为我不关心这样的条目。
'===============================================================
' Record the logon in their X: drive UNLESS they are on TERM-SERVER!
'===============================================================
If strComputerName <> "TERM-SRVER" Then
strFile = "X:\login.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(strFile, 8, True)
objTextFile.WriteLine(strIP + " - " + strComputerName + " - " + CStr(Date) + " " + CStr(Time))
objTextFile.Close
' Make it hidden
Set objTextFile = objFSO.GetFile(strFile)
objTextFile.Attributes = 2
End If
然后我在本地机器上使用一些 VBscript 自动在 AD 中找到他们的主目录,打开日志文件,并打印出最后几行。