Używamy zdjęcia z AD dla profilu użytkownika Windows 10

Programy Outlook, SharePoint, Office365 i Skype dla firm umożliwiają używanie zdjęcia bieżącego zalogowanego użytkownika z usługi Active Directory (Azure AD) jako awatarów użytkowników w ich interfejsie. W tym artykule pokażemy, jak używać obrazu użytkownika Active Directory jako obrazu profilu użytkownika systemu Windows 10 przy użyciu zasad grupy i programu PowerShell, który pojawia się na ekranie powitalnym, ekranie blokady, w menu Start itp..

Nasz skrypt będzie działał w następujący sposób: gdy użytkownik zaloguje się do systemu, należy uruchomić skrypt, który odbierze zdjęcie użytkownika z atrybutu thumbnailPhoto w Active Directory, zapisz plik obrazu na dysku i zainstaluj ten plik jako zdjęcie profilowe profilu użytkownika Windows. Rozwiązanie powinno działać jednakowo na wszystkich obsługiwanych klientach: Windows 10 (8.1 / 7) i na serwerach RDSH z systemem Windows Server 2016/2012 R2.

Treść

  • Importuj zdjęcia użytkowników z Active Directory
  • Zapewniamy użytkownikom prawo do zmiany ikony profilu
  • Skrypt PowerShell, aby pobrać zdjęcie użytkownika z AD i zainstalować ikonę profilu Windows
  • Uruchamianie skryptu PowerShell w celu powiązania zdjęć z profilem przez GPO

Importuj zdjęcia użytkowników z Active Directory

Przede wszystkim użytkownicy AD muszą ustawić zdjęcia, przesyłając je do specjalnego atrybutu thumbnailPhoto konta. Możesz ustawić zdjęcia użytkownikom za pomocą programów innych firm lub modułu ActiveDirectory dla Windows PowerShell (rozmiar pliku ze zdjęciem nie powinien przekraczać 100 Kb, a rozdzielczość do 96 × 96 pikseli):

$ photo = [bajt []] (Get-Content C: \ PS \ divanov_photo.jpg -Bajtowanie kodowania)
Set-ADUser divanov -Replace @ thumbnailPhoto = $ photo

Szczegółowe informacje na temat używania programu PowerShell do zarządzania zdjęciami w AD można znaleźć w artykule: Prześlij zdjęcie użytkownika do usługi Active Directory.

Zapewniamy użytkownikom prawo do zmiany ikony profilu

W systemie Windows 10 informacje o obrazie konta (ścieżka do obrazu używanego w profilu użytkownika) są przechowywane w gałęzi rejestru systemowego Hklm\ OPROGRAMOWANIE\ Microsoft\ Windows\ CurrentVersion\ AccountPicture\ Użytkownicy. Aby użytkownicy bez uprawnień administratora mogli dokonywać zmian, musisz zapewnić im uprawnienia do zapisu w tym kluczu rejestru.

  1. Najprostszym sposobem jest dystrybucja praw rejestru za pomocą zasad grupy. Aby to zrobić, utwórz nową zasadę i powiąż ją z jednostką organizacyjną z komputerami użytkowników;
  2. Następnie przejdź do sekcji Konfiguracja komputera -> Zasady -> Ustawienia systemu Windows -> Ustawienia zabezpieczeń -> Rejestr i utwórz nowy klucz rejestru (Dodaj klucz) ze ścieżką MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users;
  3. Następnie tab Bezpieczeństwo muszą zostać przyznane Pełna Kontrola dla wszystkich użytkowników domeny (grupa [nazwa_domeny] \ Użytkownicy) i kliknij OK;
  4. W następnym oknie dialogowym wybierz Zamień istniejące uprawnienie na wszystkie klucze podrzędne na uprawnienia dziedziczne, w przeciwnym razie użytkownicy nie będą mieli uprawnień do zagnieżdżonych gałęzi rejestru;

Skrypt PowerShell, aby pobrać zdjęcie użytkownika z AD i zainstalować ikonę profilu Windows

Następnie potrzebujemy skryptu PowerShell, który powinien pobrać zdjęcie bieżącego użytkownika z Active Directory, zapisać go w pliku jpg i ustawić jako ikonę profilu użytkownika. Istnieją dwie opcje uzyskiwania zdjęć z AD: za pomocą polecenia cmdlet Get-ADUser z modułu ActiveDirectory (moduł ten musi być zainstalowany na wszystkich komputerach przez RSAT lub po prostu skopiować niezbędne pliki modułu RSAT-AD-PowerShell bez instalowania RSAT). Aby skrypt był uniwersalny i działał poprawnie, w tym w systemie Windows 7, nie będziemy używać modułu RSAT-AD-PowerShell, ale uzyskamy dostęp do AD za pośrednictwem klasy ADSISearcher.

Przykład skryptu SetADPicture.ps1 Aby uzyskać zdjęcie użytkownika z AD i ustawić je jako awatar konta Windows, patrz poniżej:

[CmdletBinding (SupportsShouldProcess = $ true)] Param ()
funkcja Test-Null ($ InputObject) return! ([bool] $ InputObject)
$ ADuser = ([ADSISearcher] "(& (objectCategory = User) (SAMAccountName = $ env: nazwa użytkownika))"). FindOne (). Właściwości
$ ADuser_photo = $ ADuser.thumbnailphoto
$ ADuser_sid = [System.Security.Principal.WindowsIdentity] :: GetCurrent (). User.Value
Jeśli ((Test-Null $ ADuser_photo) -eq $ false)
$ img_sizes = @ (32, 40, 48, 96, 192, 200, 240, 448)
$ img_mask = "Obraz 0 .jpg"
$ img_base = "C: \ Users \ Public \ AccountPictures"
$ reg_base = "HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users \ 0"
$ reg_key = [ciąg] :: format ($ reg_base, $ ADuser_sid)
$ reg_value_mask = "Obraz 0"
Jeśli ((Test-Path -Path $ reg_key) -eq $ false) New-Item -Path $ reg_key
Wypróbuj
ForEach (rozmiar $ w $ img_sizes)
$ dir = $ img_base + "\" + $ ADuser_sid
If ((Test-Path -Path $ dir) -eq $ false) $ (mkdir $ dir) .Attributes = "Ukryty"
$ nazwa_pliku = ([ciąg] :: format ($ img_mask, $ rozmiar))
$ path = $ katalog + "\" + $ nazwa_pliku
Pełne zapisywanie „zapisywanie: $ nazwa_pliku”
$ ADuser_photo | Set-Content -Path $ path -Encoding Byte -Force
$ name = [string] :: format ($ reg_value_mask, $ size)
$ value = New-ItemProperty -Path $ reg_key -Name $ name -Value $ path -Force


Złap
Błąd zapisu „Sprawdź uprawnienia do plików lub rejestru”.

Skrypt otrzymuje wartość atrybutu thumbnailphoto bieżącego użytkownika z usługi Active Directory AD i zapisuje zdjęcie w katalogu C: \ Users \ Public \ AccountPictures \ User SID. Katalog będzie zawierał pliki graficzne o różnych rozdzielczościach (od 32 × 32 do 448 × 448 pikseli) dla różnych formatów elementów interfejsu systemu Windows 10: image32.jpg, image40.jpg itp..

Wiązanie zdjęć z profilem użytkownika odbywa się w gałęzi rejestru HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users \ User SID.

Uruchamianie skryptu PowerShell w celu powiązania zdjęć z profilem przez GPO

Teraz potrzebujemy skryptu SetADPicture.ps1 do uruchomienia, gdy użytkownik zaloguje się do systemu Windows. Najprostszym sposobem jest zaimplementowanie tej grupy zasad za pomocą skryptu logowania..

Aby to zrobić, we wcześniej utworzonych zasadach w sekcji Użytkownik Konfiguracja -> Zasady -> Windows Ustawienia -> Skrypty (Zaloguj się/ Wyloguj się), utwórz nowy skrypt logowania, który uruchamia skrypt PowerShell:

Plik wykonywalny: % windir% \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe

Parametry skryptu: -Nieinteraktywny -ExecutionPolicy Bypass -Noprofile -File% logonserver% \ netlogon \ script \ SetADPicture.ps1

Jest ważne. Skrypt SetADPicture.ps1 musi zostać wcześniej skopiowany do katalogu netlogon \ script \ na kontrolerze domeny.

Pozostaje przypisać zasadę do niezbędnej jednostki organizacyjnej z komputerami, wykonać wylogowanie i logowanie użytkownika.

W ustawieniach zasad włącz tryb przetwarzania sprzężenia zwrotnego GPO (Konfiguracja komputera -> Szablony administracyjne -> System -> Zasady grupy -> Skonfiguruj tryb przetwarzania sprzężenia zwrotnego zasad grupy użytkownika = Scal). W tym trybie możesz zastosować zasadę do jednostki organizacyjnej z użytkownikami.

Aby zdiagnozować użycie obiektu zasad grupy na komputerach docelowych, użyj narzędzia gpresult i artykułu „Dlaczego nie używa się obiektu zasad grupy?”.

Następnie użytkownik Windows 10 otrzyma awatar z AD i zacznie poprawnie wyświetlać się jako obraz konta użytkownika w menu Start, na ekranie logowania i innych oknach. Instrukcje dotyczące prawidłowego przypisania zdjęcia do profilu i przetestowania go w systemie Windows 10 LTSC (1809).