Active directory Active Directory查询以获取已登录到域计算机的所有用户

Active directory Active Directory查询以获取已登录到域计算机的所有用户,active-directory,Active Directory,在Windows 7和10上,我尝试查询而不是手动访问每台计算机的用户文件夹。我需要为大约85台计算机生成一个列表,包括曾经登录过它的用户。除了本地管理员之外,CCM似乎没有任何特别好的东西。我知道我可以运行powershell来获取当前登录的用户,但我需要所有曾经登录过的用户。是否有一种方法可以让所有通过powershell或其他方法从计算机登录的用户都通过powershell或其他方法登录,这样我就不必为了提高效率而手动检查所有用户每个登录的用户都会创建一个配置文件,这样您就可以检查所有现有

在Windows 7和10上,我尝试查询而不是手动访问每台计算机的用户文件夹。我需要为大约85台计算机生成一个列表,包括曾经登录过它的用户。除了本地管理员之外,CCM似乎没有任何特别好的东西。我知道我可以运行powershell来获取当前登录的用户,但我需要所有曾经登录过的用户。是否有一种方法可以让所有通过powershell或其他方法从计算机登录的用户都通过powershell或其他方法登录,这样我就不必为了提高效率而手动检查所有用户

每个登录的用户都会创建一个配置文件,这样您就可以检查所有现有的配置文件,这些配置文件将作为目录显示在
C:\users
下。假设您拥有远程计算机的管理员权限,则可以执行以下操作:

Get-ChildItem -Path "\\computername\c$\Users" | Select Name
您必须过滤掉一些条目,如
Default

这将为您提供用户名。但是,如果您的环境中有多个域,这可能还不够,因为它不会告诉您帐户来自哪个域。如果这是您的问题,您可以查看注册表。以下是配置文件列表:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
它具有每个帐户的SID,然后您可以在AD中查找该帐户。这里有一个查看PowerShell中注册表的示例:

此Powershell命令适用于Windows 10,但没有筛选器

$Users = Get-Content -Path "C:\PCs.txt"
$out = ForEach ($user in $users)
{ invoke-command -computername $User {Get-ChildItem "C:\users" |
select-object Name, @{Name='ComputerName';Expression={ $env:COMPUTERNAME }} |
ft -AutoSize
}}

$out | Out-File "c:\users.txt"