Používame fotografiu z AD pre užívateľský profil Windows 10

Programy Outlook, SharePoint, Office365 a Skype for Business vám umožňujú používať fotografiu súčasného prihláseného používateľa zo služby Active Directory (Azure AD) ako avatary používateľov vo svojom rozhraní. V tomto článku si ukážeme, ako použiť obrázok používateľa služby Active Directory ako obrázok užívateľského profilu systému Windows 10 pomocou skupinových politík a PowerShell, ktoré sa zobrazujú na uvítacej obrazovke, na uzamknutej obrazovke, v ponuke Štart atď..

Náš skript bude fungovať nasledovne: Keď sa používateľ prihlási do systému, musí sa spustiť skript, ktorý dostane fotografiu používateľa z atribútu thumbnailPhoto v službe Active Directory, uloží obrazový súbor na disk a nainštaluje tento súbor ako profilový obrázok užívateľského profilu Windows. Riešenie by malo fungovať rovnako na všetkých podporovaných klientoch: Windows 10 (8.1 / 7) a na RDSH serveroch s Windows Server 2016/2012 R2.

obsah:

  • Importujte fotografie používateľov v službe Active Directory
  • Poskytujeme používateľom právo zmeniť ikonu profilu
  • Skript PowerShell na získanie fotografie používateľa z AD a inštaláciu ikony profilu Windows
  • Spustenie skriptu PowerShell na spojenie fotografií s profilom prostredníctvom GPO

Importujte fotografie používateľov v službe Active Directory

V prvom rade je potrebné, aby používatelia AD nastavili fotografie tak, že ich odovzdajú do špeciálneho atribútu miniatúryFoto účtu. Fotografie môžete nastaviť pre používateľov pomocou programov tretích strán alebo pomocou modulu ActiveDirectory pre Windows PowerShell (veľkosť súboru s fotografiou by nemala byť vyššia ako 100 Kb a rozlíšenie až 96 × 96 pixelov):

$ photo = [byte []] (obsah C: \ PS \ divanov_photo.jpg - kódovací byte)
Set-ADUser divanov - Nahradiť @ thumbnailPhoto = $ photo

Podrobnosti o používaní PowerShell na správu fotografií v službe AD nájdete v článku: Nahranie fotografie používateľa do služby Active Directory.

Poskytujeme používateľom právo zmeniť ikonu profilu

Vo Windows 10 sa informácie o obrázku účtu (cesta k obrázku použitému pre užívateľský profil) uložia do vetvy systémového registra. HKLM\ SOFTVÉR\ Microsoft\ Windows\ CurrentVersion\ AccountPicture\ Používatelia. Aby používatelia bez oprávnení správcu mohli vykonávať zmeny, musíte im poskytnúť oprávnenia na zápis do tohto kľúča databázy Registry.

  1. Najjednoduchším spôsobom je distribúcia práv na registre prostredníctvom skupinových politík. Ak to chcete urobiť, vytvorte novú politiku a pripojte ju k OU s počítačmi používateľov;
  2. Potom prejdite na časť Konfigurácia počítača -> Zásady -> Nastavenia systému Windows -> Nastavenia zabezpečenia -> Register a vytvorte nový kľúč databázy Registry (Pridať kľúč) s cestou MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users;
  3. Potom kartu zabezpečenia treba udeliť plne ovládanie pre všetkých používateľov domény (skupina [DomainName] \ Users) a kliknite na OK;
  4. V nasledujúcom dialógovom okne vyberte položku Nahradiť existujúce povolenie na všetky podkľúče dedičnými povoleniami, v opačnom prípade nebudú mať používatelia práva na vnorené pobočky registra;

Skript PowerShell na získanie fotografie používateľa z AD a inštaláciu ikony profilu Windows

Ďalej potrebujeme skript PowerShell, ktorý by mal získať fotografiu aktuálneho používateľa zo služby Active Directory, uložiť ho do súboru jpg a nastaviť ho ako ikonu užívateľského profilu. Na získanie fotografií z AD existujú dve možnosti: použitie rutiny Get-ADUser z modulu ActiveDirectory (tento modul musí byť nainštalovaný na všetkých počítačoch pomocou RSAT alebo iba skopírovať potrebné súbory modulu RSAT-AD-PowerShell bez nainštalovania RSAT). Aby bol skript univerzálny a správne fungoval, a to aj vo Windows 7, nebudeme používať modul RSAT-AD-PowerShell, ale k AD pristupujeme prostredníctvom triedy ADSISearcher..

Príklad skriptu SetADPicture.ps1 Ak chcete získať fotografiu používateľa z AD a nastaviť ju ako avatar svojho účtu Windows, pozrite si nižšie:

[CmdletBinding (SupportsShouldProcess = $ true)] Param ()
function Test-Null ($ InputObject) return! ([bool] $ InputObject)
$ ADuser = ([ADSISearcher] "(& (objectCategory = User) (SAMAccountName = $ env: username))"). FindOne (). Vlastnosti
$ ADuser_photo = $ ADuser.thumbnailphoto
$ ADuser_sid = [System.Security.Principal.WindowsIdentity] :: GetCurrent (). User.Value
If ((Test-Null $ ADuser_photo) -eq $ false)
$ img_sizes = @ (32, 40, 48, 96, 192, 200, 240, 448)
$ img_mask = "Image 0 .jpg"
$ img_base = "C: \ Users \ Public \ AccountPictures"
$ reg_base = "HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users \ 0"
$ reg_key = [string] :: format ($ reg_base, $ ADuser_sid)
$ reg_value_mask = "Image 0"
If ((Test-Path - Path $ reg_key) -eq $ false) New-Item-Path $ reg_key
Vyskúšajte
ForEach (veľkosť $ v $ img_sizes)
$ dir = $ img_base + "\" + $ ADuser_sid
Ak ((testovacia cesta - cesta $ dir) -eq $ false) $ (mkdir $ dir) .Attributes = "Hidden"
$ file_name = ([string] :: format ($ img_mask, $ size))
$ path = $ dir + "\" + $ file_name
Write-Verbose "save: $ file_name"
$ ADuser_photo | Set-Content - Cesta $ path -Encoding Byte -Force
$ name = [string] :: format ($ reg_value_mask, $ size)
$ value = New-ItemProperty - Cesta $ reg_key --Name $ name -Value $ path -Force


Chytiť
Chyba pri zápise „Skontrolujte povolenia pre súbory alebo register.“

Skript dostane hodnotu atribútu thumbnailphoto aktuálneho používateľa z AD Active Directory a uloží fotografiu do adresára C: \ Users \ Public \ AccountPictures \ User SID. Katalóg bude obsahovať grafické súbory s rôznymi rozlíšením (od 32 × 32 do 448 × 448 pixelov) pre rôzne formáty prvkov rozhrania Windows 10: image32.jpg, image40.jpg atď..

Viazanie fotografií do užívateľského profilu sa vykonáva vo vetve registra HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users \ SID používateľa.

Spustenie skriptu PowerShell na spojenie fotografií s profilom prostredníctvom GPO

Teraz potrebujeme skript SetADPicture.ps1, ktorý sa spustí, keď sa používateľ prihlási do systému Windows. Najjednoduchší spôsob je implementovať túto skupinu politík pomocou prihlasovacieho skriptu..

Ak to chcete urobiť, v predtým vytvorenej politike v sekcii užívateľ konfigurácia -> Pravidlá -> Windows nastavenie -> Skripty (Logon/ Odhlásiť sa), vytvorte nový prihlasovací skript, ktorý spustí váš skript PowerShell:

Spustiteľný súbor: % windir% \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe

Parametre skriptu: -Neinteraktívne -VykonávaniePolicy Bypass -Noprofile -File% logonserver% \ netlogon \ script \ SetADPicture.ps1

Je dôležité. Skript SetADPicture.ps1 musí byť predtým skopírovaný do adresára netlogon \ script \ na radiči domény.

Zostáva priradiť politiku potrebnej organizačnej jednotke s počítačmi, vykonať odhlásenie a prihlásenie používateľa.

V nastaveniach politiky povoľte režim spracovania spätnej slučky GPO (Konfigurácia počítača -> Šablóny pre správu -> Systém -> Zásady skupiny -> Konfigurácia režimu spracovania skupinovej politiky používateľa = Zlúčiť). V tomto režime môžete použiť politiku na OU s používateľmi.

Na diagnostiku použitia GPO na cieľových počítačoch použite pomôcku gpresult a článok „Prečo sa GPO nepoužíva?“.

Potom bude užívateľovi systému Windows 10 pridelený avatar z AD a začne sa správne zobrazovať ako obrázok používateľského účtu v ponuke Štart, na prihlasovacej obrazovke a ďalších oknách. Pokyny na priradenie profilovej fotografie k práci v poriadku a testované na Windows 10 LTSC (1809).