Microsoft Graph PowerShell ile kullanıcı fotoğrafları nasıl yönetilir?
Microsoft Entra'da yalnızca tek bir kullanıcının profil resmini ayarlayabilir veya değiştirebilirsiniz. PowerShell ile birden fazla kullanıcıya ait kullanıcı fotoğraflarını alabilir, indirebilir, ayarlayabilir ve kaldırabilirsiniz. Bu yazıda Microsoft Graph PowerShell ile kullanıcı fotoğraflarını nasıl yöneteceğinizi öğreneceksiniz.
Microsoft Entra'da kullanıcı fotoğrafı nasıl değiştirilir?
Microsoft Entra yönetim merkezinde kullanıcı fotoğrafını değiştirmek için aşağıdaki adımları izleyin:
- Microsoft Entra yönetim merkezine gidin
- Kimlik'i genişletin
- Kullanıcılar > Tüm kullanıcılar'ı tıklayın
- Bir kullanıcıyı tıklayın
- Kamera simgesini tıklayın
- Dosyaları sürükleyip bırakın veya Dosyalara göz atın
- Yükle'yi tıklayın
- Amanda Hansen için kullanıcı profili fotoğrafını başarıyla yüklediniz
Birden fazla kullanıcı fotoğrafı yüklemek istiyorsanız bunu Microsoft Entra yönetim merkezinde yapmak zaman alır. Fotoğrafları toplu olarak yüklemenin en hızlı ve en doğru yolu PowerShell kullanmaktır.
Sonraki adımlarda, kullanıcı fotoğraflarını toplu olarak nasıl alacağınızı, indireceğinizi, ayarlayacağınızı ve kaldıracağınızı göstereceğiz.
Microsoft Graph PowerShell'e bağlanın
Başlamadan önce Microsoft Graph PowerShell modülünü yüklemelisiniz.
Windows PowerShell'i yönetici olarak başlatın ve aşağıdaki komutu çalıştırın.
Install-Module Microsoft.Graph -ForceÖnemli: Hataları ve yanlış sonuçları önlemek için bir cmdlet'i veya komut dosyasını çalıştırmadan önce daima Microsoft Graph PowerShell modülü sürümünün en son sürümünü yükleyin.
Microsoft Graph ile kimlik doğrulaması yapmak için Connect-MgGraph cmdlet'ini aşağıdaki kapsamlarla çalıştırın.
Connect-MgGraph -Scopes "User.ReadWrite.All"Artık hazır olduğunuza göre komutları Microsoft Graph PowerShell ile kullanabilirsiniz.
PowerShell ile kullanıcı fotoğrafını alın
Bir kullanıcı hesabına fotoğraf yüklenip yüklenmediğini görmek için Get-MgUserPhoto PowerShell cmdlet'ini kullanmanız gerekir. Kullanıcının fotoğraf özelliklerini gösterecektir.
Tek bir hesap için kullanıcı fotoğrafı alın
Tek bir hesaba ait kullanıcı fotoğrafını almak için kullanıcı kimliğini sağlamanız gerekir.
Aşağıdaki PowerShell komutunu çalıştırın.
Get-MgUserPhoto -UserId "0f38d53f-cbe0-4844-86e9-1032a45ba31b"PowerShell çıktı sonucu, kullanıcı fotoğraf boyutlarını piksel cinsinden gösterir.
Id Height Width
-- ------ -----
default 855 740 Kullanıcının profil fotoğrafı yoksa aşağıdaki hatayı alırsınız.
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 GMTKullanıcı fotoğrafı gereksinimleri:
- Çözünürlük: Sınırsız (10.000 x 10.000 piksel ile test edilmiştir)
- Boyut: maks. 4MB
- Dosya: PNG, JPEG, JPG, BMP'yi destekler
Boyut 4 MB'tan büyükse resmi sıkıştırmalısınız. Bazıları resimleri sunucularına kaydettiği için herhangi bir çevrimiçi araç kullanmayın. Resimlerinizin web sitelerine yüklediğinizde gizli kalması için yerel veya başka bir güvenli araç kullanın.
Tüm kullanıcı fotoğraflarını toplu olarak alın
Tüm kullanıcı özellikleri fotoğraflarını almak için aşağıdaki PowerShell betiğini çalıştırın.
- 2 numaralı satırda dosya yolunu belirtin
# 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 UTF8Bu, fotoğraf özelliklerinin sonuçlarını bir Out-GridView'da verecektir.
Ayrıca fotoğraf özellikleri sonuçlarını C:\temp biçimindeki CSV dosyasına aktaracaktır. Sonuçları görmek için CSV dosyasını Microsoft Excel ile açın.
PowerShell ile kullanıcı fotoğrafını indirin
Kullanıcı fotoğrafını indirmek için Get-MgUserPhotoContent PowerShell cmdlet'ini kullanmanız gerekir.
Tek bir hesap için kullanıcı fotoğrafını indirin
Brenda Smith'in kullanıcı fotoğrafını indirmek istiyoruz. Bu yüzden -OutFile parametresinde bir yol sağlamalıyız. Örneğimizde, hataları önlemek için C:\temp klasörünü ve ardından UserPrincipalName'i kullanacağız.
Aşağıdaki PowerShell komutunu çalıştırın.
Get-MgUserPhotoContent -UserId "0f38d53f-cbe0-4844-86e9-1032a45ba31b" -OutFile "C:\temp\Brenda.Smith@m365info.com.png"Resmi sağladığınız yola indirecektir.
Tüm kullanıcı fotoğraflarını toplu olarak indir
Tüm kullanıcı fotoğraflarını, her resmin UserPrincipalName özelliğiyle adlandırılacağı bir klasöre indirebilirsiniz.
Tüm kullanıcı fotoğraflarını toplu olarak indirmek için aşağıdaki adımları izleyin:
- C:\temp'de yeni bir klasör oluşturun ve onu UserPhotos olarak adlandırın
- 2 numaralı satırda yolu belirtin
- <'den sonra görselleri indirmek istediğiniz dosya türünü belirtin (png, jpg, jpeg veya bmp).$userUPN. 20 numara satırında
- Aşağıdaki PowerShell betiğini çalıştırın
# 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
}
}Sağladığınız klasördeki tüm kullanıcı fotoğraflarını indirecektir.
PowerShell ile kullanıcı fotoğrafını ayarlayın
Tek kullanıcılı ve çoklu kullanıcı hesaplarının kullanıcı fotoğrafının nasıl ayarlanacağına veya değiştirileceğine bakalım.
Kullanıcı fotoğrafını PowerShell ile ayarlamak veya değiştirmek için Set-MgUserPhotoContent cmdlet'ini kullanacağız.
Not: Set-MgUserPhotoContent cmdlet'ini çalıştırdığınızda ve zaten bir kullanıcı fotoğrafı mevcut olduğunda, bu fotoğrafın üzerine yazılacaktır.
Tek bir hesap için kullanıcı fotoğrafını ayarlayın
Kullanıcı fotoğrafını tek bir kullanıcı hesabına ayarlamak için resmin yolunu belirtmeniz gerekir.
Brenda Smith'in kullanıcı fotoğrafını ayarlamak istiyoruz. Bu yüzden -InFile parametresinde bir yol sağlamalıyız. Örneğimizde, hataları önlemek için C:\temp klasörünü ve ardından UserPrincipalName'i kullanacağız.
Aşağıdaki PowerShell komutunu çalıştırın.
Set-MgUserPhotoContent -UserId "0f38d53f-cbe0-4844-86e9-1032a45ba31b" -Infile "C:\temp\Brenda.Smith@m365info.com.png"Kullanıcı fotoğrafını Microsoft Entra'da ayarlayacak veya değiştirecektir.
Birden fazla hesap için kullanıcı fotoğrafını ayarlayın
Birden fazla kullanıcı hesabı için kullanıcı fotoğraflarının nasıl ayarlanacağını size göstereceğiz. Bu komut dosyası, CSV dosyası oluşturmadan birden fazla kullanıcı fotoğrafını değiştirmenize olanak tanır.
Birden fazla kullanıcı fotoğrafını değiştirmek için aşağıdaki adımları izleyin:
- C:\temp'de yeni bir klasör oluşturun ve onu UserPhotos olarak adlandırın
- Güncellemek istediğiniz tüm kullanıcı görsellerini UserPhotos klasörüne kaydedin
- Her kullanıcı fotoğrafına UserPrincipalName adını verin
- 2 numaralı satırda kullanıcı resimlerinin yolunu belirtin
- Aşağıdaki PowerShell betiğini çalıştırın
# 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 GreenPowerShell ile kullanıcı fotoğrafını kaldırın
Tek bir kullanıcıya ve birden fazla kullanıcı hesabına ait kullanıcı fotoğrafının nasıl silineceğine bakalım.
Kullanıcı fotoğrafını PowerShell ile kaldırmak için Remove-MgUserPhoto cmdlet’ini kullanacağız.
Tek bir hesap için kullanıcı fotoğrafını kaldırın
Tek bir kullanıcı hesabının fotoğrafını kaldırmak için kullanıcı kimliğini belirtmeniz gerekir.
Aşağıdaki PowerShell komutunu çalıştırın.
Remove-MgUserPhoto -UserId "0f38d53f-cbe0-4844-86e9-1032a45ba31b" -Confirm:$FalseTüm kullanıcı fotoğraflarını toplu olarak kaldır
Tüm kullanıcı fotoğraflarını toplu olarak kaldırmak için aşağıdaki PowerShell betiğini çalıştırın.
# 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
}
}Bu kadar!
Devamını oku: Azure AD kullanıcılarını Microsoft Graph PowerShell ile güncelleyin »
Çözüm
Microsoft Graph PowerShell ile kullanıcı fotoğraflarını nasıl yöneteceğinizi öğrendiniz. Süreci kolaylaştırmak için doğru PowerShell komutlarına veya komut dosyalarına sahip olmanız önemlidir. Tek bir kullanıcı için ve tüm kullanıcıları toplu olarak alabilir, indirebilir, ayarlayabilir ve kaldırabilirsiniz.
Bu makaleyi beğendiniz mi? Azure AD kullanıcılarını Microsoft Graph PowerShell ile geri yükleme makalesini de beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.









