[玩转系统] 如何使用 Connect-MgGraph - 所有选项
作者:精品下载站 日期:2024-12-14 06:32:12 浏览:15 分类:玩电脑
如何使用 Connect-MgGraph - 所有选项
PowerShell 中的 Microsoft Graph 模块允许您与不同的 Microsoft 365 服务进行交互。但要使用该模块,您首先需要使用 Connect-MgGraph cmdlet 连接到 Microsoft Graph。
在对 Microsoft Graph 连接进行身份验证时,有不同的选项,从交互式登录到基于证书的托管身份。后者非常适合后台操作。
在本文中,我们将了解如何使用 Connect-MgGraph、不同的范围和身份验证方法。
安装 Microsoft Graph 模块
在我们了解如何连接到 Microsoft Graph 之前,我们首先需要确保您已在 PowerShell 中安装了该模块。该模块实际上称为 Microsoft Graph PowerShell SDK。
建议使用 PowerShell 7 for Microsoft Graph,但您也可以在旧版 PowerShell 5.1 中安装和使用该模块。如果您想了解如何安装或升级 PowerShell,请务必阅读本文。
您可以使用以下命令检查是否安装了该模块:
Get-InstalledModule Microsoft.Graph
要安装该模块,我们将使用 Install-Module
cmdlet。最简单的方法是仅为当前用户安装它,但您也可以为所有用户安装它:
Install-Module Microsoft.Graph -Scope CurrentUser
如果您想了解有关安装 Microsoft Graph 的更多信息,例如如何仅安装特定模块或测试版,请务必阅读本文。
连接 MgGraph 方法
Microsoft Graph 有不同的方法可以用来进行身份验证,但它们都可以分为两种类型的身份验证:
委派访问 - 代表登录用户执行命令。您将需要使用范围来定义 cmdlet 可以执行哪些操作。
仅应用程序访问 - 身份验证基于访问令牌(形式),允许 Microsoft Graph 在没有登录用户的情况下访问资源。权限(范围)在访问令牌中定义
对于委托访问,我们可以使用以下方法:
交互式身份验证 - 您将收到使用您自己的帐户登录的提示。
设备代码 - 用于在另一台设备上进行身份验证。
自己的访问令牌 - 使用您自己的访问令牌进行身份验证。
-
自定义应用程序 - 允许您使用 Azure AD 应用程序并将登录限制为指定的用户或组。
您还可以使用不同的方法进行仅限应用程序访问:
基于证书 - 允许您使用自签名证书
托管身份 - 用于 Azure Runbook 等。
客户端密钥 - 使用 Azure 应用程序中的客户端密钥。非常适合后台工作。
范围
通过委派访问连接到 Microsoft Graph 时,您需要定义要授予权限的范围。另外,使用仅应用程序方法时,您需要为 Graph 设置正确的 API 权限。但您如何知道您需要哪些范围呢?
有两种方法可以查找 cmdlet 需要哪些权限,您可以查看文档或使用 cmdlet Find-MgGraphCommand
。我们以 cmdlet Get-MgUserAuthenticationMethod
为例。
如果我们查看文档,您通常会在描述中找到权限表。当权限未列出时,我们可以使用 Find-MgGraphCommand
cmdlet 或 Find-MgGraphPermission
cmdlet
Find-MgGraphCommand -Command "Get-MgUserAuthenticationMethod" | select -ExpandProperty Permissions | Select -Unique name
# Or
Find-MgGraphPermission AuthenticationMethod
另一种选择是使用图形浏览器,请在本文中阅读有关该方法的更多信息。
委托访问
如前所述,当你想要在本地运行脚本或只想从控制台与 Microsoft Graph 交互时,将使用委派访问权限。通过委派访问,我们需要定义连接 Microsoft Graph 时要使用的范围。
交互式认证
最常用的身份验证方法是交互式身份验证。这是默认方法,因此我们只需要定义要授予权限的范围。例如,要获取所有用户和组,您需要使用 User.Read.All
和 Group.Read.All
作用域:
# Connect to MgGraph with user and group read permissions
# and suppress the welcome message
Connect-MgGraph -Scopes "User.Read.All", "Group.Read.All" -NoWelcome
运行该命令时,将打开一个新的浏览器选项卡,允许您使用 Microsoft 365 凭据登录。
设备代码
当您无法在运行 Connect-MgGraph 命令的设备上进行身份验证时,也可以使用设备代码流。这允许您通过打开网页 https://microsoft.com/devicelogin 在另一台计算机上完成身份验证过程。
Connect-MgGraph -Scopes "User.Read.All", "Group.ReadWrite.All" -UseDeviceAuthentication
访问令牌
访问令牌方法允许你使用自己的访问令牌向 Microsoft Graph 进行身份验证。例如,可以通过登录 Microsoft Graph Explorer 页面来获取此令牌。
然后,您可以从访问令牌选项卡复制访问令牌。复制令牌并将其粘贴到 Connect-MgGraph
cmdlet 中:
Connect-MgGraph -Accesstoken <paste-your-token-here>
自定义 Azure 应用程序
委托访问的最后一个选项是使用自定义 Azure 应用程序。当您需要限制特定用户或组的访问权限时,此方法非常有用。
打开 Microsoft Entra > 应用程序注册
创建新注册
帐户类型 - 仅此组织目录中的帐户(单个租户)
重定向 URI - 公共客户端/本机 > http://localhost
注册
打开企业应用程序 > 选择您的新应用程序
单击属性 - 启用所需的分配
打开用户和组 - 添加允许使用该应用程序的用户或组。
在脚本中使用以下连接方法连接到 Microsoft Graph:
Connect-MgGraph -ClientId <your-app-id> -TenantId <tenant-id>
仅应用程序访问
当您想要在本地计算机或服务器上将 PowerShell 脚本作为计划任务运行时,您将需要使用仅限应用程序的访问权限。这允许您创建应用程序并仅分配脚本所需的权限。
基于证书
对本地计划的 PowerShell 脚本进行身份验证的最佳方法是使用基于证书的身份验证方法。此方法使用我们可以在 PowerShell 中创建的自签名证书。
第 1 步 - 创建自签名证书
第一步是创建自签名证书。您可以在本地计算机上创建证书,但请确保已将其安装在要安排脚本的计算机的受信任存储中。
为了创建证书,我们将使用 New-SelfSigendCertificate
cmdlet。指定有意义的名称和主题,以便您知道证书的用途。证书默认有效期为一年:
$cert = New-SelfSignedCertificate -FriendlyName "PSMsGraph" -Subject "Test Cert PowerShell MsGraph" -CertStoreLocation "Cert:\CurrentUser\My"
下一步是导出证书,以便我们可以将其上传到 Azure AD 应用程序。请注意文件路径中的文件名:
Export-Certificate -Cert $cert -FilePath "c:\temp\PSMsGraph.cer"
步骤 2 - 创建 Azure AD 应用程序
创建证书后,我们现在可以创建 Azure AD 应用程序。在这里我们将上传证书并设置所需的权限。该权限需要管理员同意,因此请确保您拥有正确的权限。
打开 Microsoft Entra 管理中心
展开应用程序并单击应用程序注册
选择新注册
输入应用程序的名称
选择仅此组织目录中的帐户
点击注册(我们不需要输入重定向 URI)
步骤 3 - 配置权限
创建应用程序后,我们现在需要配置脚本所需的 Microsoft Graph 权限。权限与范围相同,因此如果您想知道要设置哪个权限,则可以使用相同的方法查找范围。
打开API权限
点击添加权限
选择Microsoft Graph
选择应用程序权限
选择您要添加的权限
点击的高级管理员同意
第 4 步 - 上传证书
设置权限后,我们现在可以上传证书。该证书用于验证连接。
单击证书和机密
选择证书并点击上传证书
上传我们之前导出的 .cer 文件
第 5 步 - 将 MgGraph 与证书连接
我们现在已经创建了使用证书连接到 MgGraph 所需的应用程序和证书。有 3 种方法可以使用证书连接到 MgGraph,但对于所有方法,我们都需要 Azure 应用程序的 ClientId 和租户 ID。
您可以在Microsoft Entra 管理中心的应用程序概述中找到这两个内容 > 应用程序注册 >
使用证书连接到 MgGraph 的第一种方法是使用证书指纹。
Connect-MgGraph -ClientId "d24d7358-12ab-2356-aabbn-asd131asb" -TenantId "11e55098-12ab-2356-aabbn-asd34fgdsav2" -CertificateThumbprint "2BF6BDD0286EF8A0AS2341NLSDH1L234C"
您可以在应用程序证书下的 Microsoft Entra > 应用程序注册中找到证书指纹。或者您可以使用以下 PowerShell 命令来查看所有自签名证书:
Get-ChildItem Cert:\CurrentUser\My
# Result
Thumbprint Subject
---------- -------
2BF6BDD0286EF8A0AS2341NLSDH1L234C CN=Test Cert PowerShell MsGraph
也可以使用证书使用者名称进行连接,但您需要将 cn= 添加到使用者名称中,就像上面的命令列出的那样。
Connect-MgGraph -ClientId "d24d7358-12ab-2356-aabbn-asd131asb" -TenantId "11e55098-12ab-2356-aabbn-asd34fgdsav2" -CertificateSubjectName "CN=Test Cert PowerShell MsGraph"
最后一个选项是在 connect-mggraph
cmdlet 中使用证书:
$Cert = Get-ChildItem Cert:\LocalMachine\My$CertThumbprint
Connect-MgGraph -ClientId "d24d7358-12ab-2356-aabbn-asd131asb" -TenantId "11e55098-12ab-2356-aabbn-asd34fgdsav2" -Certificate $Cert
托管身份
在 Azure Runbook 内使用 Microsoft Graph 连接时,可以使用托管标识方法进行身份验证。这将从 Azure 资源获取访问令牌,这是在 Runbook 中使用 MgGraph 的最便捷方法。
您需要确保已为您的自动化帐户启用系统分配的托管标识,请阅读本文中的更多信息。
要使用托管身份连接到 MgGraph,您只需指定 -Identity
参数即可:
Connect-MgGraph -Identity
客户秘密
通过仅应用程序访问连接到 Microsoft Graph 的最后一个选项是使用客户端机密凭据。对于此方法,您还需要创建一个 Azure AD 应用程序,只需按照基于证书的身份验证方法中的步骤 2 和 3 进行操作即可。
在 Azure AD 应用中,打开证书和机密
单击客户端密钥 > 新客户端密钥
输入描述并点击添加
复制值(您只能在创建后立即查看该值)
使用
Get-Credential
创建凭证对象并连接到 MgGraph:
# Credential = Application Client ID
$ClientSecretCredential = Get-Credential -Credential "d24d7358-12ab-2356-aabbn-asd131asb"
# Connect to MgGraph using the client secret
Connect-MgGraph -TenantId "11e55098-12ab-2356-aabbn-asd34fgdsav2" -ClientSecretCredential $ClientSecretCredential
这里需要注意的是,用于创建凭证对象的客户端 ID 是应用程序客户端 ID(不是秘密 ID!)
包起来
如您所见,有多种方法可以在 PowerShell 中连接到 Microsoft Graph。在控制台本地工作时,交互式方法是最方便使用的方法。但是,当您想要安排脚本时,您将需要使用证书或托管身份方法。
确保为连接定义正确的范围/权限,否则,您将无法使用所需的 cmdlet。
我希望这篇文章对您有所帮助,如果您有任何疑问,请在下面发表评论。
猜你还喜欢
- 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