如何连接到 Microsoft Graph PowerShell
有多种方法可以连接到 Microsoft Graph PowerShell 来管理 Microsoft 365 和 Azure 租户。哪一种方法适合您取决于您想要什么。一个很好的例子是连接到 Microsoft Graph PowerShell 以自动执行 Microsoft Graph PowerShell 脚本,无需用户交互。在本文中,您将了解如何使用三种不同的方法连接到 Microsoft Graph PowerShell。
先决条件
您需要在系统上安装 Microsoft Graph PowerShell 模块。
以管理员身份启动 Windows PowerShell 并运行以下命令。
Install-Module Microsoft.Graph -Force
重要的:在运行 cmdlet 或脚本之前,请务必更新到最新的 Microsoft Graph PowerShell 模块版本,以防止出现错误和不正确的结果。
第一种方法是您大部分时间都会使用的方法,因为您想要使用您的帐户连接到 Microsoft Graph 并使用命令。
Connect-MgGraph -Scopes "User.Read.All"
验证您的凭据,然后您将返回到 PowerShell 窗口。
方法 2 – 如何使用基于证书的身份验证 CBA 连接到 Microsoft Graph
第二种方法是在 Azure 中注册具有权限的应用程序。让我们完成以下步骤,并为无人值守脚本设置基于 Microsoft Graph 证书的身份验证。
1. 在Azure中注册应用程序
要在 Microsoft Entra ID 中注册应用程序,请按照下列步骤操作:
- 登录到微软 Entra 管理中心
- 扩张Azure 活动目录
- 点击应用程序 > 应用程序注册
- 选择新注册
- 填写姓名MSGraph-自动化
- 选择任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户和个人 Microsoft 帐户
- 点击登记
- MSGraph 自动化应用程序概述出现
- 复制申请(客户 ID)和目录(租户)ID并将其粘贴到记事本中,因为稍后连接到 Microsoft Graph 时需要它
2.配置Azure应用程序API权限
您需要按照以下步骤向您创建的 MSGraph-Automation 应用程序添加 API 权限:
- 点击API 权限 > 添加权限
- 选择Microsoft API > Microsoft Graph
- 选择应用程序权限
- 搜索用户.read.all
- 扩张用户并选择用户.阅读.全部
- 点击添加权限
- 点击授予管理员同意
- 点击是的
- 状态显示为绿色复选标记
现在应用程序已注册并设置了 API 权限,我们可以配置两种身份验证方法;证书或客户端秘密。
3.生成自签名证书
要生成自签名证书,请使用 Windows PowerShell 登录到任何 Windows Server 或桌面。最好在要运行无人值守 PowerShell 脚本的计算机上生成证书。
当您将自签名证书上传到 Azure 中的应用程序时,以及如果您想在其他系统上使用该证书,您需要在后面的步骤中使用自签名证书。
笔记:默认情况下,自签名证书的有效期为一年。
在本例中,我们为自签名证书添加了 5 年,因此我们不必每年更新它。
$mycert = New-SelfSignedCertificate -DnsName "exoip.com" -CertStoreLocation "cert:LocalMachineMy" -NotAfter (Get-Date).AddYears(5) -KeySpec KeyExchange -FriendlyName "MSGraph Automation"
确认证书并复制指纹并将其粘贴到记事本中。稍后连接到 Microsoft Graph 时将需要它。
$mycert | Select-Object -Property Subject,Thumbprint,NotBefore,NotAfter
这就是输出的样子。
Subject Thumbprint NotBefore NotAfter
------- ---------- --------- --------
CN=exoip.com 384010504F6B495B6D53B1C55DC6C1A7273081AC 7/7/2023 6:14:36 PM 7/7/2028 6:24:36 PM
将证书导出到.cer 文件。
你会需要那个.cer 文件当您将其上传到 Azure 应用程序(您将在后续步骤中创建该应用程序)时。
$mycert | Export-Certificate -FilePath "C:tempMSGraphAutomationCert.cer"
出现输出。
Directory: C:temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 7/7/2023 6:25 PM 796 MSGraphAutomationCert.cer
将证书导出到.pfx 文件。
你会需要那个.pfx 文件使用另一台计算机通过基于证书的身份验证进行连接时。复制或发送.pfx 文件并将其安装到其他机器上。
$mycert | Export-PfxCertificate -FilePath "C:tempMSGraphAutomationCert.pfx" -Password $(ConvertTo-SecureString -String "P@ssw0Rd1234" -AsPlainText -Force)
出现输出。
Directory: C:temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 7/7/2023 6:26 PM 2717 MSGraphAutomationCert.pfx
4. 将证书上传到应用程序
您需要上传您在上一步中创建的自签名证书:
- 点击证书和秘密
- 点击证书 > 上传证书
- 单击浏览图标并选择自签名MSGraphAutomationCert.cer 文件在C:温度
- 添加描述MS Graph 自动化证书
- 点击添加
- 证书出现在列表中
笔记:确认它具有与您在上一步中导出的证书指纹相同的证书指纹。
5. 使用基于证书的身份验证连接到 Microsoft Graph
启动 Windows PowerShell ISE 或 Visual Studio Code 并填写以下三个变量以使用基于证书的身份验证连接到 Microsoft Graph PowerShell:
- $客户端ID
- $租户ID
- $CertificateThumbPrint
# Configuration
$ClientId = "0a613e88-a189-4eac-b8c3-055196fd04d6"
$TenantId = "eb403171-a4ec-4d98-a08f-1876318c9deb"
$CertificateThumbprint = "384010504F6B495B6D53B1C55DC6C1A7273081AC"
# Connect to Microsoft Graph with CBA
Connect-MgGraph -ClientId $ClientId -TenantId $TenantId -CertificateThumbprint $CertificateThumbprint
现在您已连接到 Microsoft Graph PowerShell,请运行 Get-MgUser cmdlet 以检索用户。
Get-MgUser
方法 3 – 如何使用客户端密钥连接到 Microsoft Graph
第三种方法是在 Azure 中注册具有权限的应用程序。让我们完成以下步骤并为无人值守脚本设置 Microsoft Graph 客户端密钥。
1. 在Azure中注册应用程序
如果您没有执行此操作,请执行上述步骤在 Azure 中注册应用程序。
2.配置Azure应用程序API权限
如果您没有执行此操作,请执行上述步骤来配置 Azure 应用程序 API 权限。
3. 添加客户端密码
您需要添加应用程序在请求令牌时用来证明其身份的客户端密钥。
- 点击证书和秘密
- 点击客户端机密 > 新客户端机密
- 给它描述MS Graph 自动化秘密
- 选择到期日期730 天(24 个月)
- 点击添加
- 复制客户秘密值并将其粘贴到记事本中,因为在下一步连接到 Microsoft Graph 时将需要它
4. 使用客户端密钥连接到 Microsoft Graph
启动 Windows PowerShell ISE 或 Visual Studio Code 并填写以下三个变量以使用客户端密钥连接到 Microsoft Graph PowerShell:
- $客户端ID
- $租户ID
- $ClientSecret
# Configuration
$ClientId = "0a613e88-a189-4eac-b8c3-055196fd04d6"
$TenantId = "eb403171-a4ec-4d98-a08f-1876318c9deb"
$ClientSecret = "Kos8Q~nVLcjmmyGSY68qDg4zbdF8f51L2EM50ac5"
# Convert the client secret to a secure string
$ClientSecretPass = ConvertTo-SecureString -String $ClientSecret -AsPlainText -Force
# Create a credential object using the client ID and secure string
$ClientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ClientId, $ClientSecretPass
# Connect to Microsoft Graph with Client Secret
Connect-MgGraph -TenantId $tenantId -ClientSecretCredential $ClientSecretCredential
现在您已连接到 Microsoft Graph PowerShell,请运行获取 MgUsercmdlet 来检索用户。
另请阅读:如何修复 Microsoft Entra Connect Sync 停止服务器关闭错误
Get-MgUser
就是这样!
结论
您学习了如何使用三种方法连接到 Microsoft Graph PowerShell。完成分步指南后,您可以通过 Microsoft Graph PowerShell 通过用户交互(方法 1)或无需用户交互的无人值守脚本(方法 2/3)进行身份验证。所有这些方法都非常适合使用。
您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 从 CSV 创建 Microsoft Entra ID 用户。不要忘记关注我们并分享这篇文章。
