Przesyłanie zdjęcia użytkownika do usługi Active Directory przy użyciu programu PowerShell

Wśród atrybutów użytkownika, począwszy od wersji schematu Active Directory w systemie Windows Server 2000, istnieje atrybut specjalny thumbnailPhoto, gdzie możesz przechowywać zdjęcie użytkownika (lub dowolne inne zdjęcie as) jako dane binarne. Program Outlook, począwszy od programu Lync 2010, SharePoint (i inne aplikacje) mogą używać danych przechowywanych w tym atrybucie do wyświetlania zdjęcia użytkownika w interfejsie. Ponadto zdjęcia te mogą być używane jako awatar użytkowników systemu Windows..

Spójrzmy na kilka prostych scenariuszy przesyłania zdjęć użytkowników do AD i eksportowania danych z domeny do plików obrazów.

Najważniejsze cechy i ograniczenia wykorzystania zdjęć użytkowników w AD:

  • Maksymalny rozmiar wartości atrybutu thumbnailPhoto użytkownika, w którym przechowywane jest pobrane zdjęcie, wynosi 100 Kb. Istnieje jednak ogólna rekomendacja, aby użyć pliku obrazu o rozmiarze AD jako zdjęcia użytkownika w AD do 10 Kb i rozmiar 96 x 96 pikseli
  • do wyświetlania zdjęć w programie Outlook 2010 i nowszych wersjach wymagana jest co najmniej wersja schematu AD 2008
  • Przy dużej liczbie zdjęć użytkowników w AD mogą wystąpić problemy z replikacją z powodu wzrostu bazy danych NTDS.DIT
  • Użytkownicy mają prawo do zmiany własnego zdjęcia w AD. Jeśli chcesz przekazać możliwość przesyłania zdjęć innym użytkownikom (na przykład działowi HR), musisz przyznać odpowiednią miniaturę zapisu zdjęcia do wybranej jednostki organizacyjnej

Treść

  • Instalowanie zdjęcia użytkownika w AD za pomocą PowerShell
  • Prześlij zdjęcie użytkownika AD za pośrednictwem Exchange Shell
  • Obraz partii importu do AD
  • Prześlij zdjęcia użytkowników z Active Directory do pliku

Instalowanie zdjęcia użytkownika w AD za pomocą PowerShell

Aby załadować zdjęcie użytkownika w usłudze Active Directory za pomocą programu PowerShell, musisz załadować moduł Aktywny Katalog Moduł dla Windows PowerShell i użyj polecenia cmdlet Set-ADUser, aby zaktualizować atrybut thumbnailPhoto, ładując zawartość pliku obrazu jako jego wartość.

Moduł importu ActiveDirectory
$ photo = [bajt []] (Get-Content C: \ PS \ admin_photo.jpg -Bajtowanie kodowania)
Set-ADUser vvkuzmin -Replace @ thumbnailPhoto = $ photo

To samo w jednym wierszu:

Set-ADUser vvkuzmin -Replace @ thumbnailPhoto = ([bajt []] (Get-Content „C: \ ps \ admin_photo.jpg” - bajt kodowania))

Po wykonaniu tych poleceń zdjęcie klienta zapisane w Active Directory zostanie wyświetlone w klientach Outlook, Lync, OWA itp. (Zakończenie replikacji i aktualizacji GAL może trochę potrwać).

Prześlij zdjęcie użytkownika AD za pośrednictwem Exchange Shell

Podobne funkcje przesyłania zdjęć użytkowników do AD są obsługiwane przez konsolę Exchange Management Shell. Do tych celów możesz użyć polecenia cmdlet Import-RecipientDataProperty.

Uwaga. Polecenie cmdlet Import-RecipientDataProperty w programie Exchange 2010 nie może załadować obrazu większego niż 10 KB.

Polecenie zaktualizowania zdjęcia vvkuzmin będzie wyglądać następująco:

Import-RecipientDataProperty -Identity „vvkuzmin” -Picture -FileData ([Byte []] $ (Get-Content -Path „C: \ PS \ admin_photo.jpg” -Encoding Byte -ReadCount 0))

Obraz partii importu do AD

Do seryjnego importowania obrazów dla wielu użytkowników Active Directory potrzebujemy pliku CSV, który będzie zawierał listę kont i odpowiednie pliki zdjęć. Format pliku import.csv może być następujący:

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

Następujące polecenie załaduje listę użytkowników z pliku CSV i zaktualizuje ich zdjęcia w AD:

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

Prześlij zdjęcia użytkowników z Active Directory do pliku

Zdjęcie użytkownika z AD można zapisać w pliku graficznym. Aby to zrobić, wybierz żądanego użytkownika za pomocą Get-ADUser:

$ ADuser = Get-ADUser vvkuzmin -Properties thumbnailPhoto

I zapisz zawartość jego atrybutu thumbnailPhoto w pliku jpg:

$ ADuser.thumbnailPhoto | Set-Content vvkuzmin.jpg -Bajt kodowania

Za pomocą następującego skryptu prześlij zdjęcie wszystko użytkownicy z określonego kontenera (OU) do pliku:

Moduł importu ActiveDirectory
$ ADusers = Get-ADUser -Filter * -SearchBase "OU = Użytkownicy, OU = Ufa, DC = winitpro, DC = en" -Properties miniatura Zdjęcie | ? $ _. thumbnailPhoto
foreach ($ ADuser w $ ADusers)
$ name = $ ADuser.SamAccountName + ".jpg"
$ ADuser.thumbnailPhoto | Set-Content $ name -Bajt kodujący

I na koniec kilka przydatnych zapytań. Pierwszy pozwala wybrać wszystkich użytkowników, którzy mają zestaw zdjęć w atrybucie AD thumbnailPhoto

Get-ADUser -Filter * -properties thumbnailPhoto | ? $ _. thumbnailPhoto | wybierz Nazwa

Drugie żądanie pozwala wybrać użytkowników bez zdjęcia:

Get-ADUser -Filter * -properties thumbnailPhoto | ? (-not ($ _. thumbnailPhoto)) | wybierz Nazwa

Istnieje wiele narzędzi innych firm, które pozwalają edytorom graficznym ustawiać zdjęcia dla użytkowników AD w wygodniejszej formie. Ale z reguły ich funkcjonalność jest zbędna, a ryzyko związane z używaniem oprogramowania do edycji AD innych firm jest dość znaczne. Ponadto wszystkie zmiany można łatwo wprowadzić za pomocą programu PowerShell.