Voorheen zetten we alle foto's in Active Directory, die dan via Exchange (in Hybrid mode) werden geupload naar Exchange Online. Dat mechanisme werkt op zich nog steeds, maar het is toch makkelijker om foto's direct naar Office365/Exchange Online te uploaden. Ik gebruik daarvoor het volgende script, waarmee eerst wordt ingelogd in Exchange, en daarna alle foto's die in $folder staan probeert te uploaden. Ik geef de foto's een grootte van 675x675 pixels, in JPEG formaat, en ze krijgen de naam zoals die ook in het e-mailadres wordt gebruikt (maar zonder de domeinnaam). Is het e-mailadres Dit e-mailadres wordt beveiligd tegen spambots. JavaScript dient ingeschakeld te zijn om het te bekijken., dan is de naam van de foto dus pietje.puk.jpg.

 

$Folder="C:\temp\photo's\small\*.jpg"
$userdomain="@logicvision.nl"
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/?proxyMethod=RPS -Credential (Get-Credential) -Authentication Basic -AllowRedirection
Import-PSSession $Session -AllowClobber -WarningAction SilentlyContinue -ErrorAction SilentlyContinue

Get-ChildItem "$Folder" | foreach {
$Filename=$_.FullName
$username=$_.basename
$Username="$username$userdomain"
$Filename
$username
Set-UserPhoto -Identity "$username" -PictureData ([System.IO.File]::ReadAllBytes("$filename")) -Preview -confirm:$False
Set-UserPhoto "$Username" -Save -confirm:$false

}

Het vergroten, verkleinen en croppen van de foto's doe ik overigens met Irfanview. De batch conversion\rename functie die daarin zit heeft behoorlijk wat functionaliteit.