Add Resized User Photos Automatically

Last updated 2018-08-14

Exchange Server 2013Exchange Server 2016Description

This script has been developed for a custom project with the following requirements:

  • User photos are provided in rectangular format by the HR department and stored in a dedicated folder
  • User photos should be resized automatically to a square format to be suitable for
    • Active Directory thumbnailPhoto attribute (96×96 pixel)
    • Exchange user photo (648×648 pixel)
    • Intrant address book (150×150 pixel)
  • Processed photos should be moved to a processed folder
  • User logon names are used as user photo file names

The script utilizes a self developed C# command line tool, which has been published as open source at GitHub. The ResizeImage Wiki explains the usage of the command line tool. The application’s configuration controls the target size and an optional pixel-based offset.

Maybe the script will be useful in your project as well.

Requirements

  • ResizeImage.exe command line tool
  • GlobalFunctions PowerShell module as desribed here
  • Exchange Server 2013+ Management Shell (EMS) for storing user photos in on-premises mailboxes
  • Exchange Online Management Shell for storing user photos in cloud mailboxes
  • Write access to thumbnailPhoto attribute in Active Directory

Examples

The code samples utilize the following folder structure:

  • D:\UserPhotos
    • SOURCE
      Contains all .JPG user photos with file names matching the user login names
    • AD
      Target folder for tumbnailPicture photos (96 x 96 px)
      • ResizeImage.exe
      • ResizeImage.exe.config (local configuration for Active Directory photos)
    • EXCHANGE
      Target folder for Exchange mailbox user photos (646 x 648 px)
      • ResizeImage.exe
      • ResizeImage.exe.config (local configuration for Exchange mailbox photos)
    • INTRANET
      Target folder for Intranet address book user photos (150 x 150 px)
      • ResizeImage.exe
      • ResizeImage.exe.config (local configuration for Intranet photos)

Code Samples

# EXAMPLE
# Resize photos stored in the default PictureSource folder for Exchange On-Premises (648x648) 
# and write images to user mailboxes

.\Set-UserPictures.ps1 -ExchangeOnPrem   

# EXAMPLE
# Resize photos stored on a SRV01 share for Exchange Online and save resized photos on a SRV02 share


.\Set-UserPictures.ps1 -ExchangeOnline -PictureSource '\\SRV01\HRShare\Photos' -TargetPathExchange '\\SRV02\ExScripts\Photos' 

# EXAMPLE 
# Resize photos stored in the default PictureSource folder for Active Directory (96x96) 
# and write images to user thumbnailPhoto attribute 

.\Set-UserPictures.ps1 -ActiveDirectory

# EXAMPLE
# Resize photos stored in the default PictureSource folder for Intranet (150x150)

.\Set-UserPictures.ps1 -Intranet

Version History

  • 1.0, Initial community release
  • 1.1, Exchange Online support added
  • 1.2, Log strings updated when updating Exchange photos

Links

Follow

%d Bloggern gefällt das: