有没有办法通过 PowerShell、批处理或 C# 获取本地计算机上当前所有配置文件的列表。我需要收集配置文件列表并显示他们是本地用户还是域用户,以及他们属于哪个域。
如下面的屏幕截图所示,Microsoft 有“用户配置文件”窗口,这正是我所寻找的,只是我想自动化它并从脚本或类似的东西中获取它。
我还没能找到能同时完成这两件事的东西。
我尝试通过 WMI 或通过注册表获取本地配置文件信息。
我都用过
win32_用户配置文件
和
win32_用户帐户
但是,UserProfile 只提供了用户配置文件的路径,没有域信息。UserAccount 返回所有 AD,即使尝试通过 SID 将其过滤掉,但耗时太长。
PS>Get-WmiObject -Class win32_userprofile | select localpath, SID
localpath SID
--------- ---
C:\Users\TestUser1 S-1-5-21-440147649-543696746-2340718013-21890
C:\Users\Admin S-1-5-21-4226746363-32877083-2456121708-500
C:\Users\TestUser2 S-1-5-21-1876808186-3675847616-1704270002-46278
C:\Windows\ServiceProfiles\NetworkService S-1-5-20
C:\Windows\ServiceProfiles\LocalService S-1-5-19
C:\Windows\system32\config\systemprofile S-1-5-18
我的下一个尝试是使用 WMI 中的信息并加载用户注册表配置单元,然后从那里获取他们所在的域,但是加载用户注册表配置单元时我找不到任何有用的信息。我确实注意到,如果当前用户已登录,则其中有一个“挥发性环境”的键(下面的屏幕截图),它包含我需要的所有信息,但仅在该用户当前登录时才可用,而不是手动加载配置单元。
我还能在哪里找到这些信息?
当前用户,不稳定的环境:
Windows 用户配置文件对话框: