Nahrávání fotografie uživatele do Active Directory pomocí PowerShell

Mezi atributy uživatele, počínaje verzí schématu služby Active Directory v systému Windows Server 2000, je zvláštní atribut náhled, kde můžete uložit fotografii uživatele (nebo jakékoli jiné obrázky 🙂) jako binární data. Aplikace Outlook začínající Lync 2010 může SharePoint (a další aplikace) použít data uložená v tomto atributu k zobrazení fotografie uživatele ve svém rozhraní. Tyto fotografie lze navíc použít jako avatar uživatelů systému Windows..

Pojďme se podívat na několik jednoduchých scénářů pro nahrávání uživatelských fotografií do služby AD a export dat z domény do obrazových souborů.

Klíčové vlastnosti a omezení použití uživatelských fotografií v AD:

  • Maximální velikost hodnoty atributu miniatilPhoto uživatele, ve kterém je stažená fotografie uložena, je 100 kB. Existuje však obecné doporučení použít jako uživatelskou fotografii v AD obrazový soubor velikosti AD do 10 Kb a velikost 96 × 96 pixelů
  • Chcete-li zobrazit fotografie v aplikaci Outlook 2010 a vyšší, je nutná alespoň verze schématu AD 2008
  • S velkým počtem uživatelských fotografií v AD může nastat problém s replikací kvůli růstu databáze NTDS.DIT
  • Uživatelé mají právo změnit svou vlastní fotku v AD. Pokud potřebujete delegovat schopnost nahrávat fotografie jiným uživatelům (například oddělení lidských zdrojů), musíte poskytnout právo „Write thumbnailPhoto“ na požadovanou OU v AD

Obsah:

  • Instalace fotografie uživatele do služby AD pomocí prostředí PowerShell
  • Nahrajte uživatelskou fotku AD přes Exchange Shell
  • Dávkový import obrázku do AD
  • Nahrajte uživatelské fotografie ze služby Active Directory do souboru

Instalace fotografie uživatele do služby AD pomocí prostředí PowerShell

Chcete-li načíst fotografii uživatele ve službě Active Directory pomocí prostředí PowerShell, musíte modul načíst Aktivní Adresář Modul pro Windows Powershell a pomocí rutiny cmdlet Set-ADUser aktualizujte atribut thumbnailPhoto načtením obsahu obrazového souboru jako jeho hodnoty.

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

Stejná věc v jednom řádku:

Set-ADUser vvkuzmin -Replace @ thumbnailPhoto = ([byte []] (Get-Content "C: \ ps \ admin_photo.jpg" -Encoding byte))

Po provedení těchto příkazů se klientská fotka uložená ve službě Active Directory zobrazí v klientech Outlook, Lync, OWA atd. (Dokončení replikace a aktualizace GAL může nějakou dobu trvat).

Nahrajte uživatelskou fotku AD přes Exchange Shell

Podobné funkce pro odesílání uživatelských fotografií do služby AD jsou podporovány prostřednictvím konzoly Exchange Management Shell. Pro tyto účely můžete použít rutinu Import-RecipientDataProperty.

Poznámka:. Rutina Import-RecipientDataProperty na serveru Exchange 2010 nemůže načíst obrázek větší než 10 kB.

Příkaz aktualizovat fotografii vvkuzmin bude vypadat takto:

Import-RecipientDataProperty -Identity “vvkuzmin” -Picture -FileData ([Byte []] $ (Get-Content -Path “C: \ PS \ admin_photo.jpg” - Zakódování Byte -ReadCount 0))

Dávkový import obrázku do AD

Pro hromadný import obrázků pro mnoho uživatelů služby Active Directory potřebujeme soubor CSV, který bude obsahovat seznam účtů a odpovídající soubory fotografií. Formát souboru import.csv může být následující:

AD_username, Photo
avivanov, C: \ PS \ avivanov.jpg
[email protected], C: \ PS \ jsmith.jpg
pppetrov, C: \ PS \ pppetrov.png

Následující příkaz načte seznam uživatelů ze souboru CSV a aktualizuje jejich fotografie v AD:

Import-Csv C: \ PS \ import.csv |% Set-ADUser --Identity $ _. AD_username -Replace @ thumbnailPhoto = ([byte []] (Get-Content $ _. Photo -Encoding byte))

Nahrajte uživatelské fotografie ze služby Active Directory do souboru

Uživatelskou fotografii z AD lze uložit do grafického souboru. Chcete-li to provést, vyberte požadovaného uživatele pomocí Get-ADUser:

$ ADuser = Get-ADUser vvkuzmin -Properties thumbnailPhoto

A uložte obsah svého atributu thumbnailPhoto do souboru jpg:

$ ADuser.thumbnailPhoto | Set-Content vvkuzmin.jpg - kódovací bajt

Pomocí následujícího skriptu nahrajte fotografii vše uživatelé z konkrétního kontejneru (OU) do souboru:

Import-Module ActiveDirectory
$ ADusers = Get-ADUser -Filter * -SearchBase "OU = Uživatelé, OU = Ufa, DC = winitpro, DC = en" -Properties thumbnailPhoto | ? $ _. thumbnailPhoto
foreach ($ ADuser v $ ADusers)
$ name = $ ADuser.SamAccountName + ".jpg"
$ ADuser.thumbnailPhoto | Set-Content $ name -Encoding byte

A konečně pár užitečných dotazů. První vám umožňuje vybrat všechny uživatele, kteří mají nastavenou fotografii v atributu AD miniaturaFot

Get-ADUser -Filter * -properties thumbnailPhoto | ? $ _. thumbnailPhoto | vyberte Název

Druhý požadavek umožňuje vybrat uživatele bez fotografie:

Get-ADUser -Filter * -properties thumbnailPhoto | ? (-not ($ _. thumbnailPhoto)) | vyberte Název

Existuje velké množství nástrojů třetích stran, které umožňují grafickým editorům pohodlněji nastavovat fotografie pro uživatele AD. Jejich funkce je však zpravidla nadbytečná a rizika používání softwaru pro úpravy reklam třetích stran jsou značná. Navíc lze všechny změny snadno provést pomocí PowerShell.