Czy istnieje sposób, albo przez PowerShell, partii, C #, aby uzyskać listę wszystkich profili aktualnie na komputerze lokalnym. Muszę zebrać listę profili i pokazać, czy są to użytkownicy lokalni, czy użytkownicy domeny i do jakiej domeny też należą.
Jak pokazano na zrzucie ekranu poniżej, Microsoft ma okno „Profile użytkownika”, które jest dokładnie tym, czego szukam, z tym że chciałbym go zautomatyzować i pobrać ze skryptu lub czegoś innego.
Nie udało mi się znaleźć niczego, co działałoby jednocześnie.
Próbowałem uzyskać połączenie uzyskiwania informacji o lokalnym profilu przez WMI lub przez rejestr, aby uzyskać informacje.
Użyłem obu
win32_UserProfile
i
win32_UserAccount
Jednak UserProfile podaje mi tylko ścieżki do profili użytkowników, bez informacji o domenie. UserAccount zwraca wszystkie AD, nawet podczas próby ich odfiltrowania według SID, ale zajmuje dużo czasu.
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
Moja kolejna próba polegała na wykorzystaniu informacji z WMI i załadowaniu gałęzi rejestru użytkowników i uzyskaniu z nich domeny, jednak nie mogłem znaleźć żadnych przydatnych informacji, gdy gałąź rejestru użytkowników jest załadowana. Zauważyłem, że jeśli bieżący użytkownik jest zalogowany, jest tam klucz do „Środowiska niestabilnego” (zrzut ekranu poniżej), który zawiera wszystkie potrzebne informacje, ale jest dostępny tylko wtedy, gdy ten użytkownik jest zalogowany, nie ładuje ula ręcznie.
Gdzie jeszcze mogę znaleźć te informacje?
Aktualny użytkownik, zmienne środowisko:
Okno dialogowe profilu użytkownika systemu Windows: