46 lines
1.6 KiB
PowerShell
46 lines
1.6 KiB
PowerShell
# 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 |