Microsoft Graph 命令行界面入门 (CLI)
在本主题中,你将使用 Microsoft Graph 命令行接口 (CLI) 来执行一些基本任务。 如果尚未 安装 CLI,请先按照本指南进行操作。
Microsoft Graph CLI 使用 Microsoft Graph REST API v1.0。
Microsoft Graph CLI 支持两种类型的身份验证:委托访问和仅应用访问。 在本主题中,你将使用委派访问权限以用户身份登录,授予 CLI 代表你执行操作的许可,并调用 Microsoft Graph。
有关对无人参与方案使用仅限应用访问的详细信息,请参阅 将仅限应用身份验证与 Microsoft Graph 命令行接口 (CLI) 。
Microsoft Graph 中的每个 API 都受一个或多个权限范围的保护。 登录的用户必须同意你计划使用的 API 所需的范围之一。 此示例使用以下 API:
- 获取用户 以查找已登录用户的用户 ID
- 列出 joinedTeams 以获取用户所属的 Teams。
- 列出 频道以获取团队中的频道。
- 发送消息 以将消息发送到团队频道。
User.Read
、Team.ReadBasic.All
、 Channel.ReadBasic.All
和 ChannelMessage.Send
权限范围启用这些调用。
mgc login
使用 命令使用所需的范围登录。
mgc login --scopes User.Read Team.ReadBasic.All Channel.ReadBasic.All ChannelMessage.Send
命令会提示你转到网页以使用设备代码登录。 完成此操作后,命令将完成。 每个会话只需登录一次。
提示
可以通过使用新的权限范围重复 mgc login
命令来添加其他权限。
登录后,可以开始调用 Microsoft Graph。
备注
Microsoft Entra资源的一些请求需要使用高级查询功能。 如果收到指示错误请求、不支持的查询或包含意外结果的响应(包括 $count
查询参数和 ConsistencyLevel
标头)的响应,则请求可能会成功。 有关详细信息和示例,请参阅 目录对象的高级查询功能。
在本部分中,你将找到已登录用户并获取其用户 ID。 需要将其用作稍后使用的其他命令的参数。 首先运行以下命令。 将 替换为 <your-display-name>
已登录用户的显示名称。
mgc users list --filter "displayName eq '<your-display-name>'"
此命令输出已登录用户的 JSON 表示形式。
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users",
"value": [
{
"businessPhones": [
"\u002B1 412 555 0109"
],
"displayName": "Megan Bowen",
"givenName": "Megan",
"jobTitle": "Marketing Manager",
"mail": "MeganB@contoso.com",
"mobilePhone": null,
"officeLocation": "12/1110",
"preferredLanguage": "en-US",
"surname": "Bowen",
"userPrincipalName": "MeganB@contoso.com",
"id": "4db673f0-3c2a-4d45-a9d9-3a4a8c63af6e"
}
]
}
可以使用 OData 查询参数 来自定义响应。 例如,若要仅请求用户的显示名称,可以使用 --select
选项。
mgc users get --user-id <user-id> --select displayName
现在, mgc me joined-teams list
使用 命令列出用户加入的团队。
mgc users joined-teams list --user-id <user-id> --select displayName,id
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#teams(displayName,id)",
"@odata.count": 5,
"value": [
{
"id": "ab41a24e-ed63-4725-abb7-d22f90a4fdc3",
"displayName": "Sales and Marketing"
},
{
"id": "6520aa84-f197-489c-b79e-a2614a5a2ad0",
"displayName": "Mark 8 Project Team"
},
{
"id": "e7bc29ba-7794-4df9-8f35-fce723b15fe4",
"displayName": "Retail"
},
{
"id": "22cf3814-dbef-4eb0-abe3-759b320b7d76",
"displayName": "Digital Initiative Public Relations"
},
{
"id": "76708e21-b4ad-431e-9394-4ee7536d17bf",
"displayName": "U.S. Sales"
}
]
}
选择用户加入的团队之一,并复制其 id
。
现在,使用团队的 ID 作为命令的参数 mgc teams channels list
。
mgc teams channels list --team-id ab41a24e-ed63-4725-abb7-d22f90a4fdc3 --select displayName,id
{
"@odata.context":
"https://graph.microsoft.com/v1.0/$metadata#teams(\u0027ab41a24e-ed63-4725-abb7-d22f90a4fdc3\u0027)/channels(displayName
,id)",
"@odata.count": 2,
"value": [
{
"id": "19:9194c1a65d9c478fa0dc1d5cd5bdf18a@thread.tacv2",
"displayName": "Monthly Reports"
},
{
"id": "19:YlJvOa8M094qgkEgjJR7l6AogKx9jDsLpuXsl7O8Ft81@thread.tacv2",
"displayName": "General"
}
]
}
选择其中一个通道并复制其 id
。
现在你已拥有团队 ID 和频道 ID,可以向频道发布消息。 使用以下命令发送消息。
mgc teams channels messages create --team-id ab41a24e-ed63-4725-abb7-d22f90a4fdc3 --channel-id 19:YlJvOa8M094qgkEgjJR7l6AogKx9jDsLpuXsl7O8Ft81@thread.tacv2 --body '{"body": {"content": "Hello world!"}, "importance": "urgent"}'
此命令与之前使用的命令不同。 它实际上是在创建某些内容,而不是查询数据。 在 Microsoft Graph 中,此命令将转换为 HTTP POST
,并且该文章的正文中需要一个 对象。 在本例中,对象是 chatMessage。 参数 --body
接受 的 chatMessage
JSON 表示形式。
mgc logout
使用 命令注销。
mgc logout