Microsoft Graph 命令行界面入门 (CLI)

在本主题中,你将使用 Microsoft Graph 命令行接口 (CLI) 来执行一些基本任务。 如果尚未 安装 CLI,请先按照本指南进行操作。

API 版本

Microsoft Graph CLI 使用 Microsoft Graph REST API v1.0

身份验证

Microsoft Graph CLI 支持两种类型的身份验证:委托访问和仅应用访问。 在本主题中,你将使用委派访问权限以用户身份登录,授予 CLI 代表你执行操作的许可,并调用 Microsoft Graph。

有关对无人参与方案使用仅限应用访问的详细信息,请参阅 将仅限应用身份验证与 Microsoft Graph 命令行接口 (CLI)

确定所需的权限范围

Microsoft Graph 中的每个 API 都受一个或多个权限范围的保护。 登录的用户必须同意你计划使用的 API 所需的范围之一。 此示例使用以下 API:

User.ReadTeam.ReadBasic.AllChannel.ReadBasic.AllChannelMessage.Send 权限范围启用这些调用。

登录

mgc login使用 命令使用所需的范围登录。

mgc login --scopes User.Read Team.ReadBasic.All Channel.ReadBasic.All ChannelMessage.Send

命令会提示你转到网页以使用设备代码登录。 完成此操作后,命令将完成。 每个会话只需登录一次。

提示

可以通过使用新的权限范围重复 mgc login 命令来添加其他权限。

调用 Microsoft Graph

登录后,可以开始调用 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 接受 的 chatMessageJSON 表示形式。

注销

mgc logout使用 命令注销。

mgc logout

后续步骤