Azure AD kullanıcılarını PowerShell ile CSV'ye aktarma
Azure AD kullanıcı bilgilerini PowerShell ile CSV'ye aktarmak istiyoruz. Azure AD kullanıcılarını neden PowerShell ile listelememiz gerekiyor? Örneğin, her Azure AD kullanıcısının Azure Active Directory'de doğru özniteliklere sahip olup olmadığını bilmek istiyoruz. Çünkü hizmet masasının bu bilgiye ihtiyacı var. Bu makalede Azure Active Directory kullanıcılarını PowerShell ile CSV dosyasına nasıl aktaracağınızı öğreneceksiniz.
Bilgi dışarı aktarma Azure AD kullanıcıları PowerShell betiği
Export-AADUsers.ps1 PowerShell betiği Azure kiracısına karşı çalışacaktır. Bundan sonra raporu CSV dosyasına aktaracaktır. CSV dosyasını Microsoft Excel veya CSV dosya uzantısını destekleyen başka bir uygulamayla açabilirsiniz.
Komut dosyası, kullanıcı başına aşağıdaki bilgileri toplayacaktır:
İD
İlk adı
-
Soy isim
Ekran adı
Kullanıcı asıl adı
E-posta adresi
İş unvanı
Yönetici görünen adı
Yönetici kullanıcı asıl adı
Departman
Şirket
Ofis
-
Çalışan kimliği
Mobil
Telefon
Sokak
Şehir
Posta Kodu
Durum
Ülke
Kullanıcı tipi
Şirket içi senkronizasyon
-
Hesap durumu
Hesap şu tarihte oluşturuldu:
Son oturum açma (Azure AD P1/P2 lisansı gerektirir)
Lisanslı
MFA durumu (kimlik doğrulama yöntemleri dahil)
Azure Active Directory kullanıcılarını PowerShell ile CSV'ye aktarma
Adımları inceleyelim ve Azure Active Directory kullanıcılarını PowerShell ile CSV dosyasına aktaralım.
1. Adım. Microsoft Graph PowerShell'i yükleyin
Windows PowerShell'i yönetici olarak çalıştırın ve Microsoft Graph PowerShell'i yükleyin.
Önemli: Yeni parametreleri kullanmak için Microsoft Graph sürüm 2.0 veya daha yeni bir sürüme ihtiyacınız vardır.
Not: Hem Microsoft Graph hem de Microsoft Graph Beta modülünü yüklemenizi öneririz. Bunun nedeni, bazı cmdlet'lerin henüz son sürümde mevcut olmaması ve çalışmayacak olmasıdır.
Windows PowerShell'i yönetici olarak çalıştırın ve Microsoft Graph sürümünü kontrol edin.
PS C:\> Get-InstalledModule Microsoft.Graph | ft -AutoSize
Version Name Repository Description
------- ---- ---------- -----------
2.1.0 Microsoft.Graph PSGallery Microsoft Graph PowerShell moduleMicrosoft Graph Beta sürümünü kontrol edin.
PS C:\> Get-InstalledModule Microsoft.Graph.Beta | ft -AutoSize
Version Name Repository Description
------- ---- ---------- -----------
2.1.0 Microsoft.Graph.Beta PSGallery Microsoft Graph PowerShell module2. Adım. Microsoft Graph PowerShell'e bağlanın
Microsoft Graph PowerShell ile Azure Active Directory'ye (AAD) bağlanın.
PS C:\> Connect-MgGraph -Scopes "User.Read.All", "UserAuthenticationMethod.Read.All", "AuditLog.Read.All"Genel yönetici kimlik bilgilerinizi girin ve Microsoft Graph izin isteğini kabul edin.
3. Adım. Azure AD kullanıcıları PowerShell betiğini dışa aktarmaya hazırlayın
(C:) sürücüsünde iki klasör oluşturun:
Sıcaklık
Kodlar
Export-AADUsers.ps1 PowerShell betiğini indirip C:\scripts klasörüne yerleştirin. Komut dosyası, CSV dosyasını C:\temp klasörüne aktaracaktır.
Komut dosyasını çalıştırırken hataları önlemek için dosyanın engellemesinin kaldırıldığından emin olun. PowerShell betiğini çalıştırırken dijital olarak imzalanmamış hata makalesinde daha fazlasını okuyun.
Diğer bir seçenek de aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırmaktır. Ona Export-AADUsers.ps1 adını verin ve C:\scripts klasörüne yerleştirin.
<#
.SYNOPSIS
Export-AADUsers.ps1
.DESCRIPTION
Export Azure Active Directory users to CSV file.
.LINK
www.alitajran.com/export-azure-ad-users-to-csv-powershell
.NOTES
Written by: ALI TAJRAN
Website: www.alitajran.com
LinkedIn: linkedin.com/in/alitajran
.CHANGELOG
V1.10, 06/20/2023 - Initial version
V1.10, 06/21/2023 - Added license status and MFA status including methods
V1.20, 06/22/2023 - Added progress bar and last login date
V1.30, 07/24/2023 - Update for Microsoft Graph PowerShell changes
#>
# Connect to Microsoft Graph API
Connect-MgGraph -Scopes "User.Read.All", "UserAuthenticationMethod.Read.All", "AuditLog.Read.All"
# Create variable for the date stamp
$LogDate = Get-Date -f yyyyMMddhhmm
# Define CSV file export location variable
$Csvfile = "C:\temp\AllAADUsers_$LogDate.csv"
# Define the Get-AllMgUsers function
Function Get-AllMgUsers {
process {
# Retrieve users using the Microsoft Graph API with property
$propertyParams = @{
All = $true
# Uncomment below if you have Azure AD P1/P2 to get last log in date
# Property = 'SignInActivity'
ExpandProperty = 'manager'
}
$users = Get-MgBetaUser @propertyParams
$totalUsers = $users.Count
# Initialize progress counter
$progress = 0
# Collect and loop through all users
foreach ($index in 0..($totalUsers - 1)) {
$user = $users[$index]
# Update progress counter
$progress++
# Calculate percentage complete
$percentComplete = ($progress / $totalUsers) * 100
# Define progress bar parameters
$progressParams = @{
Activity = "Processing Users"
Status = "User $($index + 1) of $totalUsers - $($user.userPrincipalName) - $($percentComplete -as [int])% Complete"
PercentComplete = $percentComplete
}
# Display progress bar
Write-Progress @progressParams
# Get manager information
$managerDN = $user.Manager.AdditionalProperties.displayName
$managerUPN = $user.Manager.AdditionalProperties.userPrincipalName
# Create an object to store user properties
$userObject = [PSCustomObject]@{
"ID" = $user.id
"First name" = $user.givenName
"Last name" = $user.surname
"Display name" = $user.displayName
"User principal name" = $user.userPrincipalName
"Email address" = $user.mail
"Job title" = $user.jobTitle
"Manager display name" = $managerDN
"Manager user principal name" = $managerUPN
"Department" = $user.department
"Company" = $user.companyName
"Office" = $user.officeLocation
"Employee ID" = $user.employeeID
"Mobile" = $user.mobilePhone
"Phone" = $user.businessPhones -join ','
"Street" = $user.streetAddress
"City" = $user.city
"Postal code" = $user.postalCode
"State" = $user.state
"Country" = $user.country
"User type" = $user.userType
"On-Premises sync" = if ($user.onPremisesSyncEnabled) { "enabled" } else { "disabled" }
"Account status" = if ($user.accountEnabled) { "enabled" } else { "disabled" }
"Account Created on" = $user.createdDateTime
# Uncomment below if you have Azure AD P1/P2 to get last log in date
# "Last log in" = if ($user.SignInActivity.LastSignInDateTime) { $user.SignInActivity.LastSignInDateTime } else { "No log in" }
"Licensed" = if ($user.assignedLicenses.Count -gt 0) { "Yes" } else { "No" }
"MFA status" = "-"
"Email authentication" = "-"
"FIDO2 authentication" = "-"
"Microsoft Authenticator" = "-"
"Password authentication" = "-"
"Phone authentication" = "-"
"Software Oath" = "-"
"Temporary Access Pass" = "-"
"Windows Hello for Business" = "-"
"Passwordless Authenticator" = "-"
}
$MFAData = Get-MgBetaUserAuthenticationMethod -UserId $user.userPrincipalName
# Check authentication methods for each user
foreach ($method in $MFAData) {
Switch ($method.AdditionalProperties["@odata.type"]) {
"#microsoft.graph.emailAuthenticationMethod" {
$userObject."Email authentication" = $true
$userObject."MFA status" = "Enabled"
}
"#microsoft.graph.fido2AuthenticationMethod" {
$userObject."FIDO2 authentication" = $true
$userObject."MFA status" = "Enabled"
}
"#microsoft.graph.microsoftAuthenticatorAuthenticationMethod" {
$userObject."Microsoft Authenticator" = $true
$userObject."MFA status" = "Enabled"
}
"#microsoft.graph.passwordAuthenticationMethod" {
$userObject."Password authentication" = $true
# When only the password is set, then MFA is disabled.
if ($userObject."MFA status" -ne "Enabled") {
$userObject."MFA status" = "Disabled"
}
}
"#microsoft.graph.phoneAuthenticationMethod" {
$userObject."Phone authentication" = $true
$userObject."MFA status" = "Enabled"
}
"#microsoft.graph.softwareOathAuthenticationMethod" {
$userObject."Software Oath" = $true
$userObject."MFA status" = "Enabled"
}
"#microsoft.graph.temporaryAccessPassAuthenticationMethod" {
$userObject."Temporary Access Pass" = $true
$userObject."MFA status" = "Enabled"
}
"#microsoft.graph.windowsHelloForBusinessAuthenticationMethod" {
$userObject."Windows Hello for Business" = $true
$userObject."MFA status" = "Enabled"
}
# Below is deprecated but add it
"#microsoft.graph.passwordlessMicrosoftAuthenticatorAuthenticationMethod" {
$userObject."Passwordless Authenticator" = $true
$userObject."MFA status" = "Enabled"
}
}
}
# Output the user object
$userObject
}
}
}
# Export users to CSV
Get-AllMgUsers | Sort-Object "Display name" | Export-Csv -Path $Csvfile -NoTypeInformation -Encoding UTF8 #-Delimiter ";"Bu şekilde görünüyor.
4. Adım. Azure AD kullanıcılarını dışarı aktarma PowerShell betiğini çalıştırın
komut dosyaları klasörünün yolunu değiştirin. Azure AD kullanıcılarını CSV dosyasına aktarmak için PowerShell betiğini çalıştırın. Tamamlanana kadar bekleyin.
PS C:\> cd c:\scripts
PS C:\scripts> .\Export-AADUsers.ps15. Adım. Azure AD kullanıcılarının CSV dosyasını rapor ettiğini doğrulayın
Komut dosyaları klasörüne gidin ve AllAADUsers_ dosyasını gördüğünüzü doğrulayın.
CSV dosyasını favori uygulamanızla açın. Örneğimizde Microsoft Excel var.
Her şey harika görünüyor!
Devamını oku: Azure AD Connect'i yeni sunucuya geçirme »
Çözüm
Azure AD kullanıcılarını PowerShell ile CSV'ye nasıl aktaracağınızı öğrendiniz. Her kullanıcı hesabında çok fazla bilgi vardır. PowerShell ile ihtiyaçlarınıza uygun özel bir rapora sahip olabilirsiniz.
Bu makaleyi beğendiniz mi? Azure AD Connect hesaplarını bulma konusunu da beğenebilirsiniz. Bizi takip etmeyi ve bu yazımızı paylaşmayı unutmayın.


