Pro uživatelský profil Windows 10 používáme fotografii z AD

Aplikace Outlook, SharePoint, Office365 a Skype for Business vám umožňují použít fotografii aktuálního přihlášeného uživatele ze služby Active Directory (Azure AD) jako uživatelské avatary v jejich rozhraní. V tomto článku si ukážeme, jak použít uživatelský obrázek služby Active Directory jako obrázek uživatelského profilu Windows 10 pomocí skupinových zásad a prostředí PowerShell, které se zobrazí na uvítací obrazovce, na obrazovce uzamčení, v nabídce Start atd..

Náš skript bude fungovat následovně: Když se uživatel přihlásí do systému, musí být spuštěn skript, který obdrží uživatelskou fotografii z atributu miniatilPhoto ve službě Active Directory, uloží obrazový soubor na disk a nainstaluje tento soubor jako profilový obrázek uživatelského profilu Windows. Řešení by mělo fungovat stejně na všech podporovaných klientech: Windows 10 (8.1 / 7) a na RDSH severtech s Windows Server 2016/2012 R2.

Obsah:

  • Import uživatelských fotografií ve službě Active Directory
  • Poskytujeme uživatelům právo změnit ikonu profilu
  • Skript PowerShell pro získání fotografie uživatele z AD a instalaci ikony profilu Windows
  • Spuštění skriptu PowerShell pro vazbu fotografií k profilu pomocí GPO

Import uživatelských fotografií ve službě Active Directory

Nejprve je nutné, aby uživatelé AD nastavili fotografie tak, že je nahrají do zvláštního atributu miniaturaFoto účtu. Fotografie můžete nastavit pro uživatele pomocí programů třetích stran nebo pomocí modulu ActiveDirectory pro Windows PowerShell (velikost souboru s fotografií by neměla být větší než 100 Kb a rozlišení do 96 × 96 pixelů):

$ photo = [byte []] (Get-Content C: \ PS \ divanov_photo.jpg -Bajt kódování)
Set-ADUser divanov -Replace @ thumbnailPhoto = $ photo

Podrobnosti o používání PowerShell ke správě fotografií v AD naleznete v článku: Nahrání uživatelské fotografie do služby Active Directory.

Poskytujeme uživatelům právo změnit ikonu profilu

Ve Windows 10 jsou informace o obrázku účtu (cesta k obrázku použitému pro uživatelský profil) uloženy ve větev systémového registru Hklm\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\ AccountPicture\ Uživatelé. Aby uživatelé bez oprávnění správce mohli provádět změny, musíte jim poskytnout oprávnění pro zápis do tohoto klíče registru.

  1. Nejjednodušší způsob je distribuovat práva k registru prostřednictvím skupinových zásad. Chcete-li to provést, vytvořte novou zásadu a připojte ji k OU s počítači uživatelů;
  2. Pak jděte do sekce Konfigurace počítače -> Zásady -> Nastavení systému Windows -> Nastavení zabezpečení -> Registr a vytvořit nový klíč registru (Přidat klíč) s cestou MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users;
  3. Poté kartu Zabezpečení musí být udělena Plné Ovládání pro všechny uživatele domény (skupina [DomainName] \ Users) a klikněte na OK;
  4. V dalším dialogovém okně vyberte Nahraďte stávající oprávnění u všech podklíčů dědičnými oprávněními, jinak nebudou mít uživatelé práva k vnořeným pobočkám registrů;

Skript PowerShell pro získání fotografie uživatele z AD a instalaci ikony profilu Windows

Dále potřebujeme skript PowerShell, který by měl získat fotografii aktuálního uživatele ze služby Active Directory, uložit jej do souboru jpg a nastavit jako ikonu uživatelského profilu. Pro získání fotografií z AD existují dvě možnosti: použití rutiny Get-ADUser z modulu ActiveDirectory (tento modul musí být nainstalován na všech počítačích přes RSAT nebo pouze zkopírovat potřebné soubory modulu RSAT-AD-PowerShell bez instalace RSAT). Aby byl skript univerzální a fungoval správně, a to i ve Windows 7, nebudeme používat modul RSAT-AD-PowerShell, ale budeme přistupovat k AD prostřednictvím třídy ADSISearcher.

Příklad skriptu SetADPicture.ps1 Chcete-li získat fotografii uživatele z AD a nastavit ji jako avatar vašeho účtu Windows, viz níže:

[CmdletBinding (SupportsShouldProcess = $ true)] Param ()
funkce 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"
Pokud ((Test-Path - Cesta $ reg_key) -eq $ false) Nová položka - Cesta $ reg_key
Zkuste
ForEach (velikost $ v $ img_sizes)
$ dir = $ img_base + "\" + $ ADuser_sid
Pokud ((testovací cesta - cesta $ dir) -eq $ false) $ (mkdir $ dir) .Attributes = "Hidden"
$ file_name = ([řetězec] :: formát ($ img_mask, $ size))
$ path = $ dir + "\" + $ file_name
Write-Verbose "save: $ file_name"
$ ADuser_photo | Set-Content - Cesta $ cesta -Kódování Byte -Force
$ name = [string] :: format ($ reg_value_mask, $ size)
$ value = New-ItemProperty -Path $ reg_key --Name $ name -Value $ path -Force


Chytit
Chyba zápisu "Zkontrolujte oprávnění k souborům nebo registru."

Skript přijme hodnotu atributu miniatur fotografie aktuálního uživatele z AD Active Directory a uloží fotografii do adresáře C: \ Users \ Public \ AccountPictures \ User SID. Katalog bude obsahovat grafické soubory s různými rozlišeními (od 32 × 32 do 448 × 448 pixelů) pro různé formáty prvků rozhraní Windows 10: image32.jpg, image40.jpg atd..

Vazba fotografií do uživatelského profilu se provádí ve větvi registru HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ AccountPicture \ Users \ SID uživatele.

Spuštění skriptu PowerShell pro vazbu fotografií k profilu pomocí GPO

Nyní potřebujeme skript SetADPicture.ps1, aby se spustil, když se uživatel přihlásí do Windows. Nejjednodušší způsob je implementovat tuto skupinu zásad pomocí přihlašovacího skriptu..

To provedete v dříve vytvořené zásadě v sekci Uživatel Konfigurace -> Zásady -> Windows Nastavení -> Skripty (Přihlášení/ Odhlášení), vytvořte nový přihlašovací skript, který spouští váš skript PowerShell:

Spustitelný soubor: % windir% \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe

Parametry skriptu: -Noninteractive -ExecutionPolicy Bypass -Noprofile -File% logonserver% \ netlogon \ script \ SetADPicture.ps1

Je důležité. Skript SetADPicture.ps1 musí být dříve zkopírován do adresáře netlogon \ script \ na řadiči domény.

Zbývá přidělit zásadu nezbytné OU u počítačů, provést odhlášení a přihlášení uživatele.

V nastavení zásad povolte režim zpracování zpětné smyčky GPO (Konfigurace počítače -> Šablony pro správu -> Systém -> Zásady skupiny -> Konfigurace režimu zpracování zásad skupiny uživatelů = Sloučit). V tomto režimu můžete použít zásady na OU u uživatelů.

Chcete-li diagnostikovat použití GPO v cílových počítačích, použijte obslužný program gpresult a článek „Proč se GPO nepoužívá?“.

Poté bude uživateli systému Windows 10 přiřazen avatar z AD a začne se správně zobrazovat jako obrázek uživatelského účtu v nabídce Start, na přihlašovací obrazovce a v dalších oknech. Pokyny pro přiřazení profilové fotografie v pořádku a otestované na Windows 10 LTSC (1809).