Mengunggah foto pengguna ke Active Directory menggunakan PowerShell

Di antara atribut pengguna, dimulai dengan versi skema Active Directory di Windows Server 2000, ada atribut khusus thumbnailFoto, di mana Anda dapat menyimpan foto pengguna (atau gambar lain 🙂) sebagai data biner. Outlook yang dimulai dengan Lync 2010, SharePoint (dan aplikasi lain) dapat menggunakan data yang disimpan dalam atribut ini untuk menampilkan foto pengguna di antarmuka mereka. Selain itu, foto-foto ini dapat digunakan sebagai avatar pengguna Windows..

Mari kita lihat beberapa skenario sederhana untuk mengunggah foto pengguna ke AD dan mengekspor data dari domain ke file gambar.

Fitur utama dan batasan penggunaan foto pengguna dalam AD:

  • Ukuran maksimum nilai atribut thumbnailFoto pengguna di mana foto yang diunduh disimpan adalah 100 Kb. Namun, ada rekomendasi umum untuk menggunakan file gambar berukuran AD sebagai foto pengguna dalam AD hingga 10 Kb dan ukuran 96 × 96 piksel
  • untuk menampilkan foto di Outlook 2010 dan di atasnya, setidaknya diperlukan versi skema AD 2008
  • Dengan sejumlah besar foto pengguna dalam AD, masalah replikasi dapat terjadi karena pertumbuhan basis data NTDS.DIT
  • Pengguna memiliki hak untuk mengubah foto mereka sendiri dalam AD. Jika Anda perlu mendelegasikan kemampuan untuk mengunggah foto ke pengguna lain (misalnya, departemen SDM), Anda harus memberikan hak "Tulis thumbnail Foto" ke OU yang diinginkan dalam AD

Konten:

  • Menginstal foto pengguna dalam AD menggunakan PowerShell
  • Unggah foto pengguna AD melalui Exchange Shell
  • Batch gambar impor ke dalam AD
  • Unggah foto pengguna dari Direktori Aktif ke file

Menginstal foto pengguna dalam AD menggunakan PowerShell

Untuk memuat foto pengguna di Active Directory menggunakan PowerShell, Anda perlu memuat modul Aktif Direktori Modul untuk Windows Powershell dan gunakan cmdlet Set-ADUser untuk memperbarui atribut thumbnailPhoto dengan memuat konten file gambar sebagai nilainya.

Impor-Modul ActiveDirectory
$ photo = [byte []] (Dapatkan-Konten C: \ PS \ admin_photo.jpg -Encoding byte)
Set-ADUser vvkuzmin -Replace @ thumbnailPhoto = $ photo

Hal yang sama dalam satu baris:

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

Setelah menjalankan perintah ini, foto klien yang disimpan di Active Directory akan ditampilkan di klien Outlook, Lync, OWA, dll. (Mungkin perlu waktu untuk menyelesaikan replikasi dan memperbarui GAL).

Unggah foto pengguna AD melalui Exchange Shell

Fungsi serupa untuk mengunggah foto pengguna ke AD didukung melalui konsol Exchange Management Shell. Untuk tujuan ini, Anda dapat menggunakan cmdlet Impor-Penerima Data Properti.

Catatan. Cmdlet Import-RecipientDataProperty di Exchange 2010 tidak dapat memuat gambar yang lebih besar dari 10 KB.

Perintah untuk memperbarui foto vvkuzmin akan terlihat seperti ini:

Impor-RecipientDataProperty -Identity “vvkuzmin” -Gambar -FileData ([Byte []] $ (Dapatkan-Konten -Path “C: \ PS \ admin_photo.jpg” -Encoding Byte -ReadCount 0))

Batch gambar impor ke dalam AD

Untuk mengimpor banyak gambar untuk banyak pengguna Active Directory sekaligus, kami memerlukan file CSV, yang akan berisi daftar akun dan file foto yang sesuai. Format file import.csv bisa seperti ini:

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

Perintah berikut akan memuat daftar pengguna dari file CSV dan memperbarui foto mereka dalam AD:

Import-Csv C: \ PS \ import.csv |% Set-ADUser -Identity $ _. AD_username -Replace @ thumbnailPhoto = ([byte []] (Dapatkan-Konten $ _. Foto-byte byte))

Unggah foto pengguna dari Direktori Aktif ke file

Foto pengguna dari AD dapat disimpan ke file grafik. Untuk melakukan ini, pilih pengguna yang diinginkan menggunakan Get-ADUser:

$ ADuser = Get-ADUser vvkuzmin -Properties thumbnailPhoto

Dan simpan konten atribut thumbnail-nya ke file jpg:

$ ADuser.thumbnailPhoto | Set-Content vvkuzmin.jpg -Encoding byte

Dengan menggunakan skrip berikut, unggah foto semua pengguna dari wadah tertentu (OU) ke file:

Impor-Modul ActiveDirectory
$ ADusers = Get-ADUser -Filter * -SearchBase "OU = Pengguna, OU = Ufa, DC = winitpro, DC = en" -Properties thumbnailPhoto | ? $ _. thumbnailFoto
foreach ($ ADuser dalam $ ADusers)
$ name = $ ADuser.SamAccountName + ".jpg"
$ ADuser.thumbnailPhoto | Set-Content $ name -Encoding byte

Dan akhirnya, beberapa pertanyaan berguna. Yang pertama memungkinkan Anda untuk memilih semua pengguna yang memiliki satu set foto dalam atribut AD thumbnailPhoto

Get-ADUser -Filter * -properties thumbnailPhoto | ? $ _. thumbnailFoto | pilih Nama

Permintaan kedua memungkinkan Anda memilih pengguna tanpa foto:

Get-ADUser -Filter * -properties thumbnailPhoto | ? (-not ($ _. thumbnailFoto)) | pilih Nama

Ada sejumlah besar utilitas pihak ketiga yang memungkinkan editor grafis untuk mengatur foto untuk pengguna AD dalam bentuk yang lebih nyaman. Tetapi, sebagai aturan, fungsi mereka berlebihan, dan risiko menggunakan perangkat lunak pengeditan AD pihak ketiga cukup signifikan. Selain itu, semua perubahan dapat dengan mudah dilakukan melalui PowerShell.