# 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