diff --git a/Exchange/Set-Profile-Picture.ps1 b/Exchange/Set-Profile-Picture.ps1 new file mode 100644 index 0000000..4610351 --- /dev/null +++ b/Exchange/Set-Profile-Picture.ps1 @@ -0,0 +1,46 @@ +# Define the local path to your default profile picture +$PicturePath = "C:\Temp\Profile_Picture.png" + +if (-not (Test-Path $PicturePath)) { + Write-Error "The specified picture file was not found at $PicturePath" + exit +} + +# Connect to Microsoft Graph. You must have the Microsoft.Graph.Users module installed. +# Scopes needed for modifying user photos. +Connect-MgGraph -Scopes "User.ReadWrite.All" + +# Retrieve standard member accounts, ignoring service accounts or guests +$Users = Get-MgUser -Filter "userType eq 'Member' and accountEnabled eq true" -All + +foreach ($User in $Users) { + $HasPhoto = $true + + try { + # Attempt to retrieve the user's photo. + # If none exists, Graph throws an ImageNotFound exception. + $null = Get-MgUserPhoto -UserId $User.Id -ErrorAction Stop + } + catch { + $HasPhoto = $false + } + + if (-not $HasPhoto) { + Write-Host "No profile picture found for $($User.UserPrincipalName). Applying default..." -ForegroundColor Cyan + + try { + # Set the photo using the local file + Set-MgUserPhotoContent -UserId $User.Id -InFile $PicturePath -ErrorAction Stop + Write-Host "Successfully applied picture to $($User.UserPrincipalName)." -ForegroundColor Green + } + catch { + Write-Host "Failed to apply picture to $($User.UserPrincipalName). Error: $($_.Exception.Message)" -ForegroundColor Red + } + } + else { + Write-Host "Profile picture already exists for $($User.UserPrincipalName). Skipping." -ForegroundColor DarkGray + } +} + +# Always sever the session. +Disconnect-MgGraph \ No newline at end of file