Za uporabniški profil sistema Windows 10 uporabljamo fotografijo iz AD-ja

Outlook, SharePoint, Office365 in Skype for Business omogočajo uporabo fotografije trenutno prijavljenega uporabnika iz Active Directory (Azure AD) kot avatarje uporabnikov v njihovem vmesniku. V tem članku bomo pokazali, kako uporabniško sliko Active Directory uporabiti kot sliko uporabniškega profila sistema Windows 10 z uporabo skupinskih politik in PowerShell, ki se prikaže na pozdravnem zaslonu, zaklenjenem zaslonu, v začetnem meniju itd..

Naš skript bo deloval na naslednji način: ko se uporabnik prijavi v sistem, se mora zagnati skript, ki prejme fotografijo uporabnika iz atributa thumbnailPhoto v aktivnem imeniku, shrani slikovno datoteko na disk in to datoteko namesti kot profilno sliko uporabniškega profila sistema Windows. Rešitev mora delovati enako na vseh podprtih odjemalcih: Windows 10 (8.1 / 7) in na RDSH-jevih strežnikih z Windows Server 2016/2012 R2.

Vsebina:

  • Uvozite fotografije uporabnikov v Active Directory
  • Uporabnikom ponujamo pravico do spremembe ikone profila
  • Skript PowerShell, da se uporabniku prikaže fotografija uporabnika in namesti ikono profila Windows
  • Zagon skripta PowerShell za vezavo fotografij na profil prek GPO

Uvozite fotografije uporabnikov v Active Directory

Najprej je potrebno, da uporabniki AD-ja postavijo fotografije tako, da jih naložijo na posebno sličico sličiceFoto računa. Fotografije lahko nastavite uporabnikom prek programov drugih proizvajalcev ali z modulom ActiveDirectory za Windows PowerShell (velikost datoteke s fotografijo ne sme biti večja od 100 Kb in ločljivost do 96 × 96 pik):

$ photo = [bajt []] (Pridobitev vsebine C: \ PS \ divanov_photo.jpg -baznacijski bajt)
Set-ADUser divanov-Zamenjaj @ thumbnailPhoto = $ photo

Podrobnosti o uporabi PowerShell-a za upravljanje fotografij v AD-ju najdete v članku: Naložite uporabniško fotografijo v Active Directory.

Uporabnikom ponujamo pravico do spremembe ikone profila

V sistemu Windows 10 se podatki o sliki računa (pot do slike, ki se uporablja za uporabniški profil) shranijo v podružnico sistemskega registra Hklm\ PROGRAMSKA OPREMA\ Microsoft\ Windows\ CurrentVersion\ AccountSlika\ Uporabniki. Če lahko uporabniki brez skrbniških pravic spreminjajo spremembe, jim morate zagotoviti dovoljenja za pisanje v ta registrski ključ.

  1. Najlažji način je distribucija pravic registra prek skupinskih pravilnikov. Če želite to narediti, ustvarite novo politiko in jo priklopite na OU z računalniki uporabnikov;
  2. Nato pojdite na razdelek Konfiguracija računalnika -> Politike -> Nastavitve sistema Windows -> Varnostne nastavitve -> Register in ustvarite nov registrski ključ (Dodaj ključ) s potjo STROJ \ PROGRAMSKA OPREMA \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Uporabniki;
  3. Nato zavihek Varnost treba odobriti Polno Nadzor za vse uporabnike domene (združite [DomainName] \ Users) in kliknite OK;
  4. V naslednjem pogovornem oknu izberite Zamenjajte obstoječe dovoljenje za vse podključeve z dednimi dovoljenji, v nasprotnem primeru uporabniki ne bodo imeli pravic do ugnezdenih podružnic registra;

Skript PowerShell, da se uporabniku prikaže fotografija uporabnika in namesti ikono profila Windows

Nato potrebujemo skript PowerShell, ki bi moral iz Active Directory pridobiti fotografijo trenutnega uporabnika, jo shraniti v datoteko jpg in jo nastaviti kot ikono uporabniškega profila. Obstajata dve možnosti za pridobivanje fotografij iz AD-ja: uporaba cmdleta Get-ADUser iz modula ActiveDirectory (ta modul mora biti nameščen na vseh računalnikih prek RSAT ali pa samo kopirati potrebne datoteke modula RSAT-AD-PowerShell brez namestitve RSAT). Da bi bil skript univerzalen in pravilno deloval, tudi v sistemu Windows 7, ne bomo uporabljali modula RSAT-AD-PowerShell, ampak bomo do AD-ja dostopali prek razreda ADSISearcher.

Primer skripta SetADPicture.ps1 Če želite pridobiti fotografijo uporabnika iz AD-ja in ga nastaviti kot avatar vašega računa za Windows, glejte spodaj:

[CmdletBinding (SupportsShouldProcess = $ true)] Param ()
funkcija Test-Null ($ InputObject) return! ([bool] $ InputObject)
$ ADuser = ([ADSISearcher] "(& (objectCategory = Uporabnik) (SAMAccountName = $ env: uporabniško ime))"). FindOne (). Lastnosti
$ ADuser_photo = $ ADuser.thumbnailphoto
$ ADuser_sid = [System.Security.Principal.WindowsIdentity] :: GetCurrent (). User.Value
Če ((Test-Null $ ADuser_photo) -eq $ false)
$ img_size = @ (32, 40, 48, 96, 192, 200, 240, 448)
$ img_mask = "Slika 0 .jpg"
$ img_base = "C: \ Uporabniki \ Public \ AccountPictures"
$ reg_base = "HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users \ 0"
$ reg_key = [string] :: format ($ reg_base, $ ADuser_sid)
$ reg_value_mask = "Slika 0"
Če ((Testna pot-Pot $ reg_key) -eq $ false) Nov element-Pot $ reg_key
Poskusite
ForEach (velikost $ v $ img_s veličine)
$ dir = $ img_base + "\" + $ ADuser_sid
If ((Test-Path -Path $ dir) -eq $ false) $ (mkdir $ dir) .Attributes = "Skrita"
$ file_name = ([string] :: format ($ img_mask, $ size))
$ path = $ dir + "\" + $ file_name
Pisno-dobesedno "varčevanje: $ file_name"
$ ADuser_photo | Set-Content -Path $ path -Encoding byte -Force
$ name = [string] :: format ($ reg_value_mask, $ size)
$ value = Lastnost novega izdelka-Pot $ reg_key -Ime $ name -Value $ path -Force


Ulov
Napaka pri pisanju "Preverite dovoljenja za datoteke ali registre."

Skript prejme vrednost atributa sličice trenutnega uporabnika iz Active Directory AD in fotografijo shrani v imenik C: \ Users \ Public \ AccountPictures \ User SID. Katalog bo vseboval grafične datoteke z različnimi ločljivostmi (od 32 × 32 do 448 × 448 slikovnih pik) za različne formate elementov vmesnika Windows 10: image32.jpg, image40.jpg itd..

Vezava fotografij na uporabniški profil poteka v podružnici registra HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Uporabniki \ User SID.

Zagon skripta PowerShell za vezavo fotografij na profil prek GPO

Zdaj potrebujemo skript SetADPicture.ps1, ki se zažene, ko se uporabnik prijavi v sistem Windows. Najlažji način je izvajanje te skupine politik s pomočjo skripte za prijavo..

To storite v predhodno ustvarjenem pravilniku v razdelku Uporabnik Konfiguracija -> Politike -> Windows Nastavitve -> Skripti (PrijavaOdjava), ustvarite nov skript za prijavo, ki poganja vaš skript PowerShell:

Izvedljiva datoteka: % windir% \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe

Parametri skripta: -Neinteraktivni -ExecutionPolicy Bypass -Noprofile -File% logonserver% \ netlogon \ script \ SetADPicture.ps1

Je pomembno. Skript SetADPicture.ps1 je treba predhodno kopirati v imenik netlogon \ script \ na krmilniku domene.

Ostaja še dodelitev pravilnika potrebnemu OU z računalniki, izvedba odjave in prijava uporabnika.

V nastavitvah pravilnika omogočite način obdelave povratne konfiguracije GPO (konfiguracija računalnika -> skrbniške predloge -> sistem -> skupinska politika -> Konfigurirajte način obdelave povratnih pravil za skupino uporabnikov = Združitev). V tem načinu lahko politiko uporabite za OU z uporabniki.

Za diagnosticiranje uporabe GPO na ciljnih računalnikih uporabite pripomoček gpresult in članek "Zakaj se GPO ne uporablja?".

Po tem bo uporabniku sistema Windows 10 dodeljen avatar iz AD-ja in se bo začel pravilno prikazovati kot slika uporabniškega računa v začetnem meniju, na prijavnem zaslonu in drugih oknih. Navodila za dodelitev profilne fotografije v redu in preizkušena na Windows 10 LTSC (1809).