Cómo administrar fotos de usuarios con Microsoft Graph PowerShell
Solo puede configurar o cambiar la imagen de perfil de un único usuario en Microsoft Entra. Con PowerShell, puede obtener, descargar, configurar y eliminar fotografías de usuarios para varios usuarios. En este artículo, aprenderá cómo administrar fotografías de usuarios con Microsoft Graph PowerShell.
Cómo cambiar la foto de usuario en Microsoft Entra
Siga los pasos a continuación para cambiar la foto del usuario en el centro de administración de Microsoft Entra:
- Vaya al centro de administración de Microsoft Entra
- Expandir Identidad
- Haga clic en Usuarios > Todos los usuarios.
- Haga clic en un usuario
- Haz clic en el icono de cámara
- Arrastrar y soltar los archivos o Buscar archivos
- Haga clic en Subir
- Has subido correctamente la foto de perfil de usuario de Amanda Hansen.
Si desea cargar varias fotos de usuarios, lleva tiempo hacerlo en el centro de administración de Microsoft Entra. La forma más rápida y precisa de cargar fotografías de forma masiva es utilizar PowerShell.
En los próximos pasos, le mostraremos cómo obtener, descargar, configurar y eliminar fotos de usuarios de forma masiva.
Conéctese a Microsoft Graph PowerShell
Antes de comenzar, debe instalar el módulo Microsoft Graph PowerShell.
Inicie Windows PowerShell como administrador y ejecute el siguiente comando.
Install-Module Microsoft.Graph -ForceImportante: Instale siempre la última versión del módulo Microsoft Graph PowerShell antes de ejecutar un cmdlet o script para evitar errores y resultados incorrectos.
Ejecute el cmdlet Connect-MgGraph con los ámbitos siguientes para autenticarse con Microsoft Graph.
Connect-MgGraph -Scopes "User.ReadWrite.All"Ahora que ya está todo configurado, puede usar los comandos con Microsoft Graph PowerShell.
Obtener foto de usuario con PowerShell
Debe utilizar el cmdlet Get-MgUserPhoto PowerShell para ver si una cuenta de usuario tiene una foto cargada. Mostrará las propiedades de la foto del usuario.
Obtener foto de usuario para una sola cuenta
Para obtener la foto de usuario para una sola cuenta, debe proporcionar la identificación de usuario.
Ejecute el siguiente comando de PowerShell.
Get-MgUserPhoto -UserId "0f38d53f-cbe0-4844-86e9-1032a45ba31b"El resultado de salida de PowerShell muestra las dimensiones de la foto del usuario en píxeles.
Id Height Width
-- ------ -----
default 855 740 Si el usuario no tiene una foto de perfil, recibirá el siguiente error.
Get-MgUserPhoto_Get: Exception of type 'Microsoft.Fast.Profile.Core.Exception.ImageNotFoundException' was thrown.
Status: 404 (NotFound)
ErrorCode: ErrorEntityNotFound
Date: 2023-12-13T21:14:21
Headers:
Transfer-Encoding : chunked
Vary : Accept-Encoding
Strict-Transport-Security : max-age=31536000
request-id : da195fb5-bc40-403b-b913-5e29686f5a36
client-request-id : 7547fa3b-973f-4366-baf9-846c8d177d2b
x-ms-ags-diagnostic : {"ServerInfo":{"DataCenter":"West Europe","Slice":"E","Ring":"5","ScaleUnit":"004","RoleInstance":"AM2PEPF0001E31A"}}
Date : Thu, 21 Dec 2023 11:27:00 GMTLos requisitos de la foto del usuario:
- Resolución: Ilimitada (probada con 10.000 x 10.000 píxeles)
- Tamaño: máx. 4 megas
- Archivo: admite PNG, JPEG, JPG, BMP
Si el tamaño es superior a 4 MB, debes comprimir la imagen. No utilice ninguna herramienta en línea, ya que algunas guardan las imágenes en su servidor. Utilice una herramienta local u otra herramienta segura para que sus imágenes permanezcan privadas cuando las cargue en su sitio web.
Obtenga de forma masiva todas las fotos de los usuarios
Para obtener todas las fotos de las propiedades del usuario, ejecute el siguiente script de PowerShell.
- Especifique la ruta del archivo en la línea número 2
# Set CSV file path to save the results
$CSVPath = "C:\temp\PhotosStatus.csv"
# Connect with privileges
Connect-MgGraph -Scopes "User.ReadWrite.All"
$users = Get-MgUser -All
$results = foreach ($user in $users) {
$photo = Get-MgUserPhoto -UserId $user.Id -ErrorAction SilentlyContinue
$photoSet = ![string]::IsNullOrEmpty($photo)
$height = if ($photoSet) { $photo.Height } else { $null }
$width = if ($photoSet) { $photo.Width } else { $null }
[PSCustomObject]@{
UserPrincipalName = $user.UserPrincipalName
PhotoSet = $photoSet
Height = $height
Width = $width
}
}
$results | Sort-Object UserPrincipalName | Out-GridView -Title "Photos Status"
$results | Sort-Object UserPrincipalName | Export-Csv -Path "$CSVPath" -NoTypeInformation -Encoding UTF8Esto generará los resultados de las propiedades de la foto en un Out-GridView.
También exportará los resultados de las propiedades de la foto a un archivo CSV en C:\temp. Abra el archivo CSV con Microsoft Excel para ver los resultados.
Descargar foto de usuario con PowerShell
Debe utilizar el cmdlet de PowerShell Get-MgUserPhotoContent para descargar la foto del usuario.
Descargar foto de usuario para una sola cuenta
Queremos descargar la foto de usuario de Brenda Smith. Por lo tanto, debemos proporcionar una ruta en el parámetro -OutFile. En nuestro ejemplo, usaremos la carpeta C:\temp, seguida del UserPrincipalName, para evitar errores.
Ejecute el siguiente comando de PowerShell.
Get-MgUserPhotoContent -UserId "0f38d53f-cbe0-4844-86e9-1032a45ba31b" -OutFile "C:\temp\Brenda.Smith@m365info.com.png"Descargará la imagen a la ruta que proporcionó.
Descargar masivamente todas las fotos de usuarios
Puede descargar todas las fotos de los usuarios a una carpeta, donde cada imagen recibirá el nombre del atributo UserPrincipalName.
Siga los pasos a continuación para descargar de forma masiva todas las fotos de los usuarios:
- Cree una nueva carpeta en C:\temp y asígnele el nombre UserPhotos.
- Especifique la ruta en la línea número 2
- Especifica qué tipo de archivo deseas descargar las imágenes (png, jpg, jpeg o bmp) después de <$userUPN. en la línea número 20
- Ejecute el siguiente script de PowerShell
# Specify the folder path where the user photos will be saved
$photoFolderPath = "C:\temp\UserPhotos"
# Connect with privileges
Connect-MgGraph -Scopes "User.ReadWrite.All"
# Get all Entra ID accounts
$users = Get-MgUser -All
# Iterate over each user in the $users collection
foreach ($user in $users) {
$userId = $user.Id
$userUPN = $user.UserPrincipalName
# Check if user photo content is available
$photo = Get-MgUserPhoto -UserId $userId -ErrorAction SilentlyContinue
if ($photo -ne $null) {
# Construct the path to save the user's photo using the Join-Path cmdlet
$photoPath = Join-Path $photoFolderPath "$userUPN.png"
# Download the user's photo
$userPhotoContent = Get-MgUserPhotoContent -UserId $userId -OutFile $photoPath -ErrorAction SilentlyContinue
if ($userPhotoContent -eq $null) {
Write-Host "Photo downloaded for user: $userUPN" -ForegroundColor Green
}
}
else {
Write-Host "Photo not found for user: $userUPN" -ForegroundColor Yellow
}
}Descargará todas las fotos de los usuarios en la carpeta que proporcionó.
Establecer foto de usuario con PowerShell
Veamos cómo configurar o cambiar la foto de usuario de un solo usuario y de varias cuentas de usuario.
Para configurar o reemplazar la foto del usuario con PowerShell, usaremos el cmdlet Set-MgUserPhotoContent.
Nota: Cuando ejecuta el cmdlet Set-MgUserPhotoContent y ya hay una foto de usuario presente, se sobrescribirá esa foto.
Establecer foto de usuario para una sola cuenta
Para configurar la foto de usuario para una sola cuenta de usuario, debe especificar la ruta de la imagen.
Queremos configurar la foto de usuario de Brenda Smith. Por lo tanto, debemos proporcionar una ruta en el parámetro -InFile. En nuestro ejemplo, usaremos la carpeta C:\temp, seguida del UserPrincipalName, para evitar errores.
Ejecute el siguiente comando de PowerShell.
Set-MgUserPhotoContent -UserId "0f38d53f-cbe0-4844-86e9-1032a45ba31b" -Infile "C:\temp\Brenda.Smith@m365info.com.png"Establecerá o reemplazará la foto del usuario en Microsoft Entra.
Establecer foto de usuario para múltiples cuentas
Le mostraremos cómo configurar fotos de usuario para múltiples cuentas de usuario. Este script le permite cambiar varias fotos de usuarios sin crear un archivo CSV.
Siga los pasos a continuación para cambiar varias fotos de usuario:
- Cree una nueva carpeta en C:\temp y asígnele el nombre UserPhotos.
- Guarda todas las imágenes de usuario que quieras actualizar en la carpeta UserPhotos
- Nombra cada foto de usuario con UserPrincipalName.
- Especifique la ruta para las imágenes del usuario en la línea número 2
- Ejecute el siguiente script de PowerShell
# Specify the folder path where the user photos will be saved
$PhotoLocation = "c:\temp\UserPhotos\"
# Connect with privileges
Connect-MgGraph -Scopes "User.ReadWrite.All"
if (!(Test-Path ($PhotoLocation))) {
Write-Host "Can't find $PhotoLocation - Double check the user photos folder path"; break
}
$i = 0
# Get all Entra ID accounts
$Users = Get-MgUser -All
$ProgDelta = 100 / ($Users.Count); $CheckCount = 0; $UserNumber = 0
ForEach ($User in $Users) {
$UserNumber++
$UserStatus = $User.DisplayName + " [" + $UserNumber + "/" + $Users.Count + "]"
Write-Progress -Activity "Updating photo for" -Status $UserStatus -PercentComplete $CheckCount
$CheckCount += $ProgDelta
$UserPhoto = $PhotoLocation + $User.UserPrincipalName
$UserPhotoExtensions = @(".png", ".jpg", ".jpeg", ".bmp")
$UserPhotoPath = $UserPhotoExtensions | Where-Object { Test-Path ($UserPhoto + $_) } | Select-Object -First 1
if ($UserPhotoPath) {
# Update the photo
Write-Host "Updating photo for" $User.UserPrincipalName -ForegroundColor Green
Set-MgUserPhotoContent -UserId $User.Id -Infile ($UserPhoto + $UserPhotoPath)
$i++
}
else {
Write-Host "No photo available for" $User.UserPrincipalName
}
}
Write-Host "All done. $i User Photos updated" -ForegroundColor GreenEliminar foto de usuario con PowerShell
Veamos cómo eliminar la foto de usuario de un solo usuario y de varias cuentas de usuario.
Para eliminar la foto de usuario con PowerShell, usaremos el cmdlet Remove-MgUserPhoto.
Eliminar foto de usuario para una sola cuenta
Para eliminar la foto de una cuenta de usuario única, debe especificar el ID de usuario.
Ejecute el siguiente comando de PowerShell.
Remove-MgUserPhoto -UserId "0f38d53f-cbe0-4844-86e9-1032a45ba31b" -Confirm:$FalseEliminar de forma masiva todas las fotos de usuarios
Para eliminar de forma masiva todas las fotos de los usuarios, ejecute el siguiente script de PowerShell.
# Get all Entra ID accounts
$users = Get-MgUser -All
# Iterate over each user profile in the $users collection
foreach ($user in $users) {
$userId = $user.Id
$userUPN = $user.UserPrincipalName
# Check if user photo is available
$userPhoto = Get-MgUserPhoto -UserId $userId -ErrorAction SilentlyContinue
if ($userPhoto -ne $null) {
# Remove user photo if available
Remove-MgUserPhoto -UserId $userId
Write-Host "User photo removed for user: $userUPN" -ForegroundColor Green
}
else {
Write-Host "User photo not available to remove from user: $userUPN" -ForegroundColor Yellow
}
}¡Eso es todo!
Leer más: Actualice los usuarios de Azure AD con Microsoft Graph PowerShell »
Conclusión
Aprendió a administrar fotografías de usuarios con Microsoft Graph PowerShell. Es esencial que tenga los comandos o scripts de PowerShell correctos para facilitar el proceso. Puede obtener, descargar, configurar y eliminar fotos de usuario para un solo usuario y para todos los usuarios en masa.
Disfrutaste este artículo? También te puede interesar Restaurar usuarios de Azure AD con Microsoft Graph PowerShell. No olvides seguirnos y compartir este artículo.









