当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何从 Microsoft Teams 管理中心使用 Cloud Shell

作者:精品下载站 日期:2024-12-14 04:04:35 浏览:14 分类:玩电脑

如何从 Microsoft Teams 管理中心使用 Cloud Shell


但更好的选择是普通的旧式 PowerShell

消息中心通知 MC289245(2021 年 10 月 4 日,Microsoft 365 路线图项目 82708)中宣布,租户现在可以使用从 Teams 管理中心调用 Azure Cloud Shell 会话的功能。显然,这个想法是允许 Teams 管理员使用 Microsoft Teams PowerShell 模块中的 cmdlet 执行任务,而无需在工作站上安装任何内容。如下所述,Cloud Shell 当然可以运行 Teams cmdlet,但由于实施所施加的限制,除非绝对必要,否则我不建议使用此方法。

运行 Cloud Shell

要启动新的 Cloud Shell 会话,请单击浏览器栏中的 shell 图标。管理中心下方会打开一个窗格,连接到 Azure 并创建云驱动器。 Azure 在幕后创建一个新的 PowerShell Core 实例,该实例在 Hyper-V 主机上的 Linux 虚拟机上运行。自从三年前 Vasil Michev 研究 Cloud Shell 以来,在许多方面,事情并没有太大进展。

连接到 shell 会话后,您可以运行 Connect-MicrosoftTeams cmdlet 以连接到 Teams 并从模块加载 cmdlet。加载模块后,您可以运行其 cmdlet(图 1)。

[玩转系统] 如何从 Microsoft Teams 管理中心使用 Cloud Shell

不仅仅是团队管理中心

如果从 Microsoft 365 管理中心启动 Cloud Shell 会话,则可以使用相同的功能。换句话说,这并不是说您可以从 Teams 管理中心启动 Cloud Shell。相反,Microsoft 已经完成了工程,使 Teams cmdlet 可用于 Cloud Shell,无论您从何处创建 Cloud Shell 会话。我能够从 Microsoft 365 管理中心、Azure 门户、Teams 管理中心和适用于 iOS 的 Azure 移动应用(我不推荐后者)在 Cloud Shell 中运行 Teams cmdlet。

需要 Azure 订阅

在能够从 Teams 管理中心连接到 Cloud Shell 之前,您必须使用连接到 Azure 订阅的帐户登录。原因是 Cloud Shell 会话将 Azure 存储用于 Linux 虚拟机并保存临时数据和存储上传的脚本。订阅涵盖 Azure 存储的使用。

如果您使用同一帐户进行订阅管理和 Teams 管理,那么帐户订阅的需求就不是问题,这在小型租户中很有可能。在较大的租户中,您必须为要执行涉及该订阅的管理操作的所有帐户分配合适的 Azure 订阅角色。

通常,我将 Azure 协调员角色分配给用于租户管理的帐户,因为这足以使用链接到订阅的资源(例如存储)。您可能会发现 Azure 的不同角色(例如共同管理员)更适合您的情况。图 2 显示了在 Azure 管理中心中担任订阅贡献者角色的帐户。

[玩转系统] 如何从 Microsoft Teams 管理中心使用 Cloud Shell

连接到团队

满足Azure要求后,我们就可以连接到Teams了。 Microsoft Teams PowerShell 文档表示,您可以运行不带任何参数的 Connect-MicrosoftTeams cmdlet。发生的情况如下:

PS /home/global> Connect-MicrosoftTeams
WARNING: Interactive authentication is not supported in this session. Using parameter '-Identity' instead.

Account   Environment Tenant                               TenantId
-------   ----------- ------                               --------
MSI@50342 AzureCloud  a562313f-14fc-43a2-9a7a-d2e27f4f3478 a562313f-14fc-43a2-9a7a-d2e27f4f3478

请注意,使用的帐户是 MSI@50342,而不是登录 Teams 管理中心的帐户。这是 Cloud Shell 在从 Teams 管理中心等控制台继承身份验证时使用的一种伪帐户形式。但是,来自 Skype for Business Online 连接器(已于 2021 年 2 月停用)的 cmdlet 现在包含在 Teams 模块中,它们使用不同的终结点和身份验证机制。最终结果是,如果您尝试运行这些 cmdlet,则会收到 404 错误:

PS /home/global> Get-CsTeamsMeetingPolicy
Get-CsTeamsMeetingPolicy: The remote server returned an error: (404) Not Found.
PS /home/global> Get-CsTeamsMessagingPolicy
Get-CsTeamsMessagingPolicy: The remote server returned an error: (404) Not Found.

如果您使用特定帐户的凭据登录 Teams,则一切正常,除非它使用多重身份验证。多重身份验证的问题在于 Cloud Shell 在终端窗口中运行,因此无法显示交互式登录对话框。您可以使用基本身份验证登录帐户,连接后,新旧 (Skype) cmdlet 都可以完美运行。租户应使用多重身份验证来保护所有管理员帐户,因此我不推荐这种方法。

PS /home/global> $O365Cred = Get-Credential

PowerShell credential request
Enter your credentials.
User: [email protected]
Password for user [email protected]: ************

PS /home/global> connect-microsoftteams -Credential $O365Cred

Account                             Environment Tenant                               TenantId
-------                             ----------- ------                               --------
[email protected]           AzureCloud  as62313f-14fc-43a2-9a7a-d2e27f4f3478 as62313f-14fc-43a2-9a7a-d2e27f4f3478

PS /home/global> Get-CsTeamsFeedbackPolicy

Identity                  : Global
UserInitiatedMode         : Enabled
ReceiveSurveysMode        : EnabledUserOverride
AllowScreenshotCollection : False
AllowEmailCollection      : False
AllowLogCollection        : False

解决方案和推荐的方法是使用设备身份验证登录 Teams。此方法生成一个唯一标识符以输入到网页中。

PS /home/global> Connect-MicrosoftTeams -UseDeviceAuthentication

To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code C5BQJLUJ8 to authenticate.

输入代码后,系统会询问您使用哪个帐户登录,然后确认您要使用名为 MS Teams PowerShell Cmdlet 的 Microsoft Graph 应用(图 3)。

[玩转系统] 如何从 Microsoft Teams 管理中心使用 Cloud Shell

有关 Microsoft Graph 应用如何使用设备身份验证的详细信息,请阅读 Lee Ford 的博客。

在 Cloud Shell 中运行 PowerShell

使用合适的帐户进行连接后,您可以运行最新版本的 Microsoft Teams PowerShell 模块(撰写本文时为 2.6.0)中包含的任何 cmdlet。您还可以将脚本从工作站上传到 Azure,以允许它们在 Cloud Shell 中运行。图 4 显示了运行简单脚本以使用 Get-CsOnlineUser 报告 Teams 用户的显示名称的结果。

[玩转系统] 如何从 Microsoft Teams 管理中心使用 Cloud Shell

如果您将上传并在 Cloud Shell 中运行的脚本限制为 Teams cmdlet 和基本 PowerShell 命令(例如 ForEach-ObjectSelect-ObjectWhere),则它们可以顺利运行-对象。。但是,如果您没有完整拼写命令名称,则可能会遇到问题。例如,在以下命令中通常使用 Sort 而不是 Sort-Object

Get-Team | Sort DisplayName

如果您运行以下命令,Cloud Shell 会提出抗议:

Get-Team | Sort DisplayName
/usr/bin/sort: cannot read: displayname: No such file or directory

这种问题强调了这样一点:Cloud Shell 与您通常运行的 PowerShell 不同。它是一个独立的环境,有自己的怪癖和要求,如果您希望在生产中使用它,则需要在编写代码时考虑到 Cloud Shell。

除了确保基本语法正确之外,当您需要使用其他模块中的 cmdlet 时,事情会变得更加复杂。团队依赖于来自 Microsoft 365 生态系统的多个组件,而管理生活中的严酷事实是,管理员要完成工作,通常需要使用其他模块(例如 SharePoint Online 或适用于 PowerShell 的 Microsoft Graph SDK)中的 cmdlet。

例如,我无法从 Teams 管理中心或 Microsoft 365 管理中心使 Azure AD 在 Cloud Shell 中工作。 GitHub 中的注释解释说,Cloud Shell 有一个特殊函数可以覆盖默认的 Connect-AzureAD 函数,以避免用户重新输入凭据。也许这就是问题所在。

从好的方面来说,您可以使用远程 PowerShell 连接到 Exchange Online PowerShell(这意味着 Get-ExoMailbox 等 REST cmdlet 均不可用)。从 Microsoft 365 管理中心(图 5)或 Teams 管理中心调用时,这适用于 Cloud Shell。

[玩转系统] 如何从 Microsoft Teams 管理中心使用 Cloud Shell

总体而言,需要确定脚本使用的所有模块或执行交互式任务的所有模块是 Cloud Shell 的限制因素。

图形访问

Cloud Shell 支持使用 Invoke-RestMethodInvoke-WebRequest cmdlet 进行图形 API 调用,因此这也是一种在模块无法正常工作的情况下访问和处理数据的可行方法预期的。图 6 显示了如何使用 Cloud Shell 中的编辑器修改脚本,该脚本使用图形 API 调用以及终端窗口中的脚本结果。

[玩转系统] 如何从 Microsoft Teams 管理中心使用 Cloud Shell

舒适度受到太多限制

毫无疑问,有些人会喜欢 Cloud Shell 并以非常高效的方式使用它。但是,Cloud Shell 对我来说不起作用。当我在标准 PowerShell 会话和 Visual Studio Code(用于开发)之间拥有完全可接受的环境时,对模块进行摆弄以期它们都能正常工作似乎并不是一种有效的工作方式。一切正常。所有模块加载。命令运行。肌肉记忆克服了设置功能中存在的任何缺陷。我怀疑我是否会经常使用 Cloud Shell(如果有的话)。但这并不是您不尝试并做出决定的理由。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯