[玩转系统] 使用 PowerShell 将 Azure AD 用户导出到 CSV
作者:精品下载站 日期:2024-12-14 18:37:55 浏览:14 分类:玩电脑
使用 PowerShell 将 Azure AD 用户导出到 CSV
我们希望使用 PowerShell 将 Azure AD 用户信息导出到 CSV。为什么我们需要使用 PowerShell 列出 Azure AD 用户?例如,我们想知道每个 Azure AD 用户在 Azure Active Directory 中是否具有正确的属性。那是因为服务台需要这些信息。在本文中,您将了解如何使用 PowerShell 将 Azure Active Directory 用户导出到 CSV 文件。
导出Azure AD用户信息的PowerShell脚本
Export-AADUsers.ps1 PowerShell 脚本将针对 Azure 租户运行。之后,它将报告导出为 CSV 文件。您可以使用 Microsoft Excel 或支持 CSV 文件扩展名的任何其他应用程序打开 CSV 文件。
该脚本将收集每个用户的以下信息:
ID
名
-
姓
显示名称
用户主体名称
电子邮件地址
职称
经理显示名称
管理员用户主体名称
部门
公司
办公室
-
员工ID
移动的
电话
街道
城市
邮政编码
状态
国家
用户类型
本地同步
-
帐户状态
帐户创建于
上次登录(需要 Azure AD P1/P2 许可证)
领有牌照
MFA状态(包括身份验证方法)
使用 PowerShell 将 Azure Active Directory 用户导出到 CSV
让我们完成这些步骤并使用 PowerShell 将 Azure Active Directory 用户导出到 CSV 文件。
步骤 1. 安装 Microsoft Graph PowerShell
以管理员身份运行 Windows PowerShell 并安装 Microsoft Graph PowerShell。
重要提示:您需要 Microsoft Graph 2.0 或更高版本才能使用新参数。
注意:我们建议同时安装 Microsoft Graph 和 Microsoft Graph Beta 模块。这是因为某些 cmdlet 在最终版本中尚不可用,并且无法运行。
以管理员身份运行 Windows PowerShell 并检查 Microsoft Graph 版本。
PS C:\> Get-InstalledModule Microsoft.Graph | ft -AutoSize
Version Name Repository Description
------- ---- ---------- -----------
2.1.0 Microsoft.Graph PSGallery Microsoft Graph PowerShell module
检查 Microsoft Graph Beta 版本。
PS C:\> Get-InstalledModule Microsoft.Graph.Beta | ft -AutoSize
Version Name Repository Description
------- ---- ---------- -----------
2.1.0 Microsoft.Graph.Beta PSGallery Microsoft Graph PowerShell module
步骤 2. 连接到 Microsoft Graph PowerShell
使用 Microsoft Graph PowerShell 连接到 Azure Active Directory (AAD)。
PS C:\> Connect-MgGraph -Scopes "User.Read.All", "UserAuthenticationMethod.Read.All", "AuditLog.Read.All"
输入您的全局管理员凭据并接受 Microsoft Graph 权限请求。
步骤 3. 准备导出 Azure AD 用户 PowerShell 脚本
在(C:)驱动器上创建两个文件夹:
温度
脚本
下载 Export-AADUsers.ps1 PowerShell 脚本并将其放置在 C:\scripts 文件夹中。该脚本会将 CSV 文件导出到 C:\temp 文件夹。
确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。
另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Export-AADUsers.ps1 并将其放置在 C:\scripts 文件夹中。
<#
.SYNOPSIS
Export-AADUsers.ps1
.DESCRIPTION
Export Azure Active Directory users to CSV file.
.LINK
www.a-d.site/export-azure-ad-users-to-csv-powershell
.NOTES
Written by: ALI TAJRAN
Website: www.a-d.site
LinkedIn: linkedin.com/in/a-d
.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 ";"
这就是它的样子。
步骤 4. 运行导出 Azure AD 用户 PowerShell 脚本
更改 scripts 文件夹的路径。运行 PowerShell 脚本将 Azure AD 用户导出到 CSV 文件。等到它完成。
PS C:\> cd c:\scripts
PS C:\scripts> .\Export-AADUsers.ps1
步骤 5. 验证 Azure AD 用户报告 CSV 文件
转到脚本文件夹并验证您是否看到 AllAADUsers_ 文件。
使用您喜欢的应用程序打开 CSV 文件。在我们的示例中,它是 Microsoft Excel。
一切看起来都很棒!
了解更多:将 Azure AD Connect 迁移到新服务器 »
结论
您了解了如何使用 PowerShell 将 Azure AD 用户导出到 CSV。每个用户帐户中都包含大量信息。使用 PowerShell,您可以获得适合您需求的自定义报告。
您喜欢这篇文章吗?您可能还喜欢查找 Azure AD Connect 帐户。不要忘记关注我们并分享这篇文章。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag