Commands › Exchange Online

Set-UserPhoto

Exchange Online ExchangeOnlineManagement Set-*

Configure the user photos feature that allows users to associate a picture with their account. User photos appear in client applications, such as Outlook, Microsoft Teams, and SharePoint. **Note**: In Microsoft 365, you can manage user photos in Microsoft Graph PowerShell. For instructions, see Manage user photos in Microsoft Graph PowerShell.

Quick start script

# Set-UserPhoto — quick start (serv365.ai)
# 1. Connect (app-only shown; interactive: omit the certificate parameters)
Connect-ExchangeOnline -CertificateThumbprint $thumb -AppId $appId -Organization $org

# 2. Capture the current state first — you cannot roll back what you never recorded
$before = Get-UserPhoto
$before | Format-List

# 3. Make the change (dry run first)
Set-UserPhoto -Identity <MailboxIdParameter> -Cancel <SwitchParameter> -PictureData <Byte[]> -WhatIf
Set-UserPhoto -Identity <MailboxIdParameter> -Cancel <SwitchParameter> -PictureData <Byte[]>

# 4. Verify and diff
$after = Get-UserPhoto
Compare-Object ($before | Out-String) ($after | Out-String)

Syntax — 5 parameter sets

CancelPhoto

Set-UserPhoto [-Identity] <MailboxIdParameter>
 [-Cancel]
 [-Confirm]
 [-GroupMailbox]
 [-DomainController <Fqdn>]
 [-IgnoreDefaultScope]
 [-PhotoType <String>]
 [-UseCustomRouting]
 [-WhatIf]
 [<CommonParameters>]

UploadPhotoData

Set-UserPhoto [-Identity] <MailboxIdParameter> -PictureData <Byte[]>
 [-Confirm]
 [-DomainController <Fqdn>]
 [-GroupMailbox]
 [-IgnoreDefaultScope]
 [-PhotoType <String>]
 [-UseCustomRouting]
 [-WhatIf]
 [<CommonParameters>]

UploadPreview

Set-UserPhoto [-Identity] <MailboxIdParameter>
 [-PictureData <Byte[]>]
 [-PictureStream <Stream>]
 [-Preview]
 [-Confirm]
 [-DomainController <Fqdn>]
 [-GroupMailbox]
 [-IgnoreDefaultScope]
 [-PhotoType <String>]
 [-UseCustomRouting]
 [-WhatIf]
 [<CommonParameters>]

UploadPhotoStream

Set-UserPhoto [-Identity] <MailboxIdParameter> -PictureStream <Stream>
 [-Confirm]
 [-DomainController <Fqdn>]
 [-GroupMailbox]
 [-IgnoreDefaultScope]
 [-PhotoType <String>]
 [-UseCustomRouting]
 [-WhatIf]
 [<CommonParameters>]

1 more parameter sets — see the parameter table below.

Parameters (12)

ParameterTypeRequiredWhat it controls
-Identity MailboxIdParameter yes The Identity parameter specifies the identity of the user. You can use any value that uniquely identifies the user. For example:
-Cancel SwitchParameter yes The Cancel switch deletes the current preview photo. You don't need to specify a value with this switch.
-PictureData Byte[] yes The PictureData parameter specifies the photo file to upload to the user's account.
-PictureStream Stream yes The PictureStream parameter specifies the photo to upload to the user's account. This parameter is used by client applications such as Outlook on the web when users add a photo. To upload a photo using PowerShell,...
-Preview SwitchParameter yes The Preview switch uploads a preview photo for the user account. You don't need to specify a value with this switch.
-Save SwitchParameter yes The Save switch specifies the uploaded photo is saved as the user's photo. You don't need to specify a value with this switch.
-Confirm SwitchParameter The Confirm switch specifies whether to show or hide the confirmation prompt. How this switch affects the cmdlet depends on whether the cmdlet requires confirmation before proceeding.
-DomainController Fqdn The DomainController parameter specifies the domain controller that's used by this cmdlet to read data from or write data to Active Directory. You identify the domain controller by its fully qualified domain name...
-GroupMailbox SwitchParameter The GroupMailbox switch is required to modify Microsoft 365 Groups. You don't need to specify a value with this switch.
-IgnoreDefaultScope SwitchParameter The IgnoreDefaultScope switch tells the command to ignore the default recipient scope setting for the Exchange PowerShell session, and to use the entire forest as the scope. You don't need to specify a value with this switch.
-PhotoType String This parameter is reserved for internal Microsoft use.
-WhatIf SwitchParameter The WhatIf switch shows what the command does without making any changes. You don't need to specify a value with this switch.

Reference facts derived from Microsoft documentation, © Microsoft, licensed CC BY 4.0; restructured with original guidance by serv365.ai.