So, an interesting issue I came across the other day. My customer wanted to copy all photos from AD to Office 365. Since I hate doing manual labor, or leaving it to each user to re-upload their pictures, I came up with this simple script.
All you have to do is enter your Office 365 admin credentials into the script, and run it from a Domain Admin account within your environment.
Please let me know if you find a better way of doing this.
P.S. don't worry about the errors, as I have not put any error checking into this script.
All you have to do is enter your Office 365 admin credentials into the script, and run it from a Domain Admin account within your environment.
# Set Credentials
$Username = "admin@tenant.onmicrosoft.com"
$Password = ConvertTo-SecureString 'MyPassword' -AsPlainText -Force
$UserCredential = New-Object System.Management.Automation.PSCredential $Username, $Password
#Connect to O365 Exchange Online
$ConnectionURI = "https://outlook.office365.com/powershell-liveid/?proxymethod=rps"
$EXSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri $ConnectionURI -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $EXSession -AllowClobber
#Get Mailboxes
$Mailboxes = (Get-MailBox -ResultSize Unlimited |?{$_.IsDirSynced -eq "True"})
foreach($Mailbox in $Mailboxes){
$ADPhoto = $Null
$ADPhoto = (Get-AdUser -Identity $Mailbox.Alias -Properties thumbnailPhoto).thumbnailPhoto
If($ADPhoto.Length -ne 0){
Write-Host -ForegroundColor Green "Uploading Picture for $($Mailbox.Name)"
Set-UserPhoto -Identity $Mailbox.Alias -PictureData ([byte[]]$ADPhoto) -Confirm:$False
}
}
Remove-PSSession $EXSession
Please let me know if you find a better way of doing this.
P.S. don't worry about the errors, as I have not put any error checking into this script.
No comments:
Post a Comment