我想find一种方法来确定用户帐户login到哪些工作站或服务器。
有一个脚本,可以扫描DC的这个信息?
或者,用户login的任何PC都应该有一个用户configuration文件。 有没有办法扫描用户configuration文件文件夹? 虽然我认为这不是完美的,因为命名约定并不总是相同的。
基本上我只需要看看UserA是否已经login到除自己以外的任何工作站或服务器。 还有其他build议吗?
除非你有一个审计产品已经到位,否则没有快捷的方法来做到这一点。 这是我过去必须做的事情。
查找用户已login的工作站/服务器
您正在查找的信息的types不保存在目录中。 我知道在没有安装工具的情况下完成此操作的唯一方法是search所有域控制器上的安全日志。 您正在寻找事件ID 4624.一旦你有你的日志过滤这个甚至运行一个查询您所查询的安全ID。 对于我的域,日志的格式为netbios \ samAccountName。 logintypes2表示交互式login(物理上是键盘/鼠标),logintypes3表示“模拟”(例如,rdp)。 在networking信息下,您应该有工作站名称和IP地址。
以下是有关事件ID 4624的更多信息: https ://www.ultimatewindowssecurity.com/securitylog/encyclopedia/event.aspx ? eventID = 4624
在机器上searchconfiguration文件
首先,我强烈build议您定位非常具体的机器,如果你走这条路线。 这将是非常耗时的过程,并依靠一些条件来工作。 也就是说,您需要成为目标pipe理员,并且需要启用pipe理共享(例如\ computername \ c $)。
您可以在PowerShell中尝试以下内容。 请注意,您将需要一个机器列表(每个FQDN),相关用户的samAccountName以及相关域的NetBIOS。 这是基于Windows 7 +的计算机的一个简单例子。 添加额外的path很容易。 该脚本将打印出findconfiguration文件path的任何计算机。
foreach($computer in $computers){ $tempPath1 = "\\" + $computer + "\c$\Users\" + $samAccountName + "\" $tempPath2 = "\\" + $computer + "\c$\Users\" + $samAccountName + "." + $domainNetBios + "\" if((Test-Path $tempPath1) -or (Test-Path $tempPath2)){ Write-Output $computer } }
额外的信用:检查你find的path的ACL,看看是否包含用户。
编辑:这是当前login会话的另一种方法 https://blogs.technet.microsoft.com/heyscriptingguy/2011/06/04/use-powershell-to-find-logon-sessions/
你需要csv中的计算机和服务器列表,现在假设你正在寻找的人名是skyra。
Get-Content C:\computers.csv | ` Select-Object @{Name='ComputerName';Expression={$_}},@{Name='FolderExist';Expression={ Test-Path "\\$_\c$\users\skyra"}}
you will see output like this Computername folderexists skyra-pc true Hppc false