如何连接到 Microsoft Graph PowerShell

Jacki

有多种方法可以连接到 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 中注册应用程序,请按照下列步骤操作:

  1. 登录到微软 Entra 管理中心
  2. 扩张Azure 活动目录
  3. 点击应用程序 > 应用程序注册
  4. 选择新注册
  1. 填写姓名MSGraph-自动化
  2. 选择任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户和个人 Microsoft 帐户
  3. 点击登记
  1. MSGraph 自动化应用程序概述出现
  2. 复制申请(客户 ID)目录(租户)ID并将其粘贴到记事本中,因为稍后连接到 Microsoft Graph 时需要它

2.配置Azure应用程序API权限

您需要按照以下步骤向您创建的 MSGraph-Automation 应用程序添加 API 权限:

  1. 点击API 权限 > 添加权限
  1. 选择Microsoft API > Microsoft Graph
  1. 选择应用程序权限
  2. 搜索用户.read.all
  3. 扩张用户并选择用户.阅读.全部
  4. 点击添加权限
  1. 点击授予管理员同意
  2. 点击是的
  1. 状态显示为绿色复选标记

现在应用程序已注册并设置了 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. 将证书上传到应用程序

您需要上传您在上一步中创建的自签名证书:

  1. 点击证书和秘密
  2. 点击证书 > 上传证书
  3. 单击浏览图标并选择自签名MSGraphAutomationCert.cer 文件C:温度
  4. 添加描述MS Graph 自动化证书
  5. 点击添加
  1. 证书出现在列表中

笔记:确认它具有与您在上一步中导出的证书指纹相同的证书指纹。

5. 使用基于证书的身份验证连接到 Microsoft Graph

启动 Windows PowerShell ISE 或 Visual Studio Code 并填写以下三个变量以使用基于证书的身份验证连接到 Microsoft Graph PowerShell:

  1. $客户端ID
  2. $租户ID
  3. $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. 添加客户端密码

您需要添加应用程序在请求令牌时用来证明其身份的客户端密钥。

  1. 点击证书和秘密
  2. 点击客户端机密 > 新客户端机密
  3. 给它描述MS Graph 自动化秘密
  4. 选择到期日期730 天(24 个月)
  5. 点击添加
  1. 复制客户秘密值并将其粘贴到记事本中,因为在下一步连接到 Microsoft Graph 时将需要它

4. 使用客户端密钥连接到 Microsoft Graph

启动 Windows PowerShell ISE 或 Visual Studio Code 并填写以下三个变量以使用客户端密钥连接到 Microsoft Graph PowerShell:

  1. $客户端ID
  2. $租户ID
  3. $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 用户。不要忘记关注我们并分享这篇文章。