有没有办法通过 PowerShell、批处理、C# 来获取当前在本地计算机上的所有配置文件的列表。我需要收集配置文件列表并显示他们是本地用户还是域用户,以及他们也属于哪个域。
如下面的屏幕截图所示,微软有“用户配置文件”窗口,这正是我正在寻找的,除了我想自动化它并从脚本或其他东西中获取它。
我一直无法找到任何两者兼而有之的东西。
我尝试混合通过 WMI 或通过注册表获取本地配置文件信息来获取信息。
我两个都用过
win32_UserProfile
和
win32_UserAccount
但是, 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
Run Code Online (Sandbox Code Playgroud)
我的下一次尝试是使用来自 WMI 的信息并加载用户注册表配置单元并从那里获取它们所在的域,但是在加载用户注册表配置单元时我找不到任何有用的信息。我确实注意到,如果当前用户已登录,则“易变环境”中有一个键(下面的屏幕截图),其中包含我需要的所有信息,但仅在该用户当前登录时可用,而不是加载手动蜂巢。
我还能在哪里找到这些信息?
当前用户,不稳定的环境:
Windows 用户配置文件对话框:
windows ×1