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

[玩转系统] 如何使用 PowerShell 连接和管理 Exchange Online

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

如何使用 PowerShell 连接和管理 Exchange Online


PowerShell 是 Microsoft 365 中本地 Exchange Server 组织和基于云的 Exchange Online 的主要管理工具。在本文中,我们将展示如何在 Windows 上安装 Exchange Online PowerShell v2 (EXO V2) 模块、如何连接到 Exchange Online 租户、管理邮箱和其他 Microsoft 365 对象。

请注意,当前有两个模块可用于管理 Exchange Online:Exchange Online PowerShell v1 和现代 Exchange Online PowerShell v2 (EXO v2)。除非有明确的理由使用旧模块(旧脚本等),否则尝试始终使用 EXO v2:它运行速度更快(就像新的 Azure AD 模块,它基于 Microsoft Graph 实现中的 REST API),cmdlet 经过优化以处理多个对象,使用现代身份验证而不是基本身份验证,支持 MFA 身份验证,ExchangeOnlineManagement 2.0.4 和更新版本可在 PowerShell Core 6.x、7x 和 macOS、Ubuntu 18.04/ 上运行20.04。

安装 Exchange Online PowerShell V2 (EXO V2) 模块

要在 Windows 中安装 Exchange Online PowerShell,您需要 PowerShell 5.x(ExchangeOnlineManagement 2.0.4 或更高版本支持 PowerShell Core)。

您计算机上的 PowerShell 脚本执行策略设置必须允许本地 *.PS 文件运行:

Set-ExecutionPolicy RemoteSigned

安装并更新 PowershellGet 模块:

Install-Module PowershellGet -Force
Update-Module PowershellGet

要从 PowerShell 脚本库为所有用户安装 EXOv2 (ExchangeOnlineManagement) 模块,请运行以下命令:

Install-Module -Name ExchangeOnlineManagement -Force -Scope AllUsers

然后您可以将该模块导入到您的会话中:

Import-Module ExchangeOnlineManagement

确保模块已安装。它还显示了它的版本(在我的例子中是 2.0.5):

Get-Module ExchangeOnlineManagement

[玩转系统] 如何使用 PowerShell 连接和管理 Exchange Online

在脚本中,您可以使用以下命令确保已安装该模块:

(Get-Module -ListAvailable -Name ExchangeOnlineManagement) -ne $null

要更新 EXOv2 模块,请使用以下命令:

Update-Module ExchangeOnlineManagement

使用 PowerShell 连接到 Exchange Online

要使用 Exchange Online 模块连接到 Microsoft 365 租户,请使用 Connect-ExchangeOnline cmdlet。例如,您可以指定具有全局管理员角色的用户的 UPN:

Connect-ExchangeOnline -UserPrincipalName [email protected] -ShowProgress $true

[玩转系统] 如何使用 PowerShell 连接和管理 Exchange Online

输入用户密码并使用 MFA 确认登录(使用智能手机上的 Microsoft Authenticator 应用程序更方便)。

如果计算机上未安装浏览器(例如,当您从 Linux 或 Windows Server Core 连接到 Exchange Online 时),您可以显示 PowerShell Core 7.x 的身份验证代码以及用于输入该代码的框,如下所示:

Connect-ExchangeOnline -Device

使用您在另一台计算机上通过浏览器获得的 URL 和代码。

或者使用

-InlineCredential

在控制台中以交互方式输入密码的选项。

如果您的帐户有权访问多个 Azure 租户,您可以使用 DeleatedOrganization 选项指定租户名称:

Connect-ExchangeOnline -UserPrincipalName [email protected] -ShowProgress $true -DelegatedOrganization a-dpreprod.onmicrosoft.com

如果帐户禁用了新式身份验证,您可以按如下方式连接:

$cred = Get-Credential
Connect-ExchangeOnline -Credential $cred -UserPrincipalName [email protected] -ShowProgress $true

您可以确保是否存在与 Exchange Online 的活动连接,如下所示:

Get-PSSession| ft -AutoSize

在我们的示例中,与 Outlook.office365.com 的连接处于活动状态(State=

Opened

)。

[玩转系统] 如何使用 PowerShell 连接和管理 Exchange Online

使用完 Exchange Online 后,使用 Disconnect-ExchangeOnline cmdlet 正确退出会话。问题是 Exchange Online 仅支持 5 个并发 PowerShell 会话。如果您尝试打开第六个,则会出现以下错误:

Fail to create a runspace because you have exceeded the maximum number of connections allowed.

您可以在 PowerShell 脚本中使用以下代码来确保通过 EXOv2 模块与 Exchange Online 的连接处于活动状态。它将允许避免与 Microsoft 365 进行额外的 PowerShell 会话。


$PSSessions = Get-PSSession | Select-Object -Property State, Name
If (((@($PSSessions) -like '@{State=Opened; Name=ExchangeOnlineInternalSession*').Count -gt 0) -ne $true) {
Connect-ExchangeOnline -UserPrincipalName [email protected] }

以下文章介绍了如何在不安装 EXOv2 模块的情况下通过 PowerShell 远程连接到本地 Exchange 或 Exchange Online:

https://a-d.site/connect-exchange-microsoft-365-remote-powershell/

使用 ExchangeOnlineManagement Cmdlet 管理 Exchange Online

您可以使用以下命令显示 EXOv2 模块中可用 cmdlet 的列表:

Get-Command -Module ExchangeOnlineManagement

目前,有 32 个 cmdlet 可用:

  • Connect-ExchangeOnline
  • Connect-IPPSSession
  • Disconnect-ExchangeOnline
  • Get-WrappedCommand
  • IsCloudShellEnvironment
  • UpdateImplicitRemotingHandler
  • Get-EXOCasMailbox
  • Get-EXOMailbox
  • Get-EXOMailboxFolderPermission
  • Get-EXOMailboxFolderStatistics
  • Get-EXOMailboxPermission
  • Get-EXOMailboxStatistics
  • Get-EXOMobileDeviceStatistics
  • Get-EXORecipient
  • Get-EXORecipientPermission
  • Get-MyAnalyticsFeatureConfig
  • Get-OwnerlessGroupPolicy
  • Get-UserBriefingConfig
  • Get-VivaInsightsSettings
  • Set-MyAnalyticsFeatureConfig
  • Set-OwnerlessGroupPolicy
  • Set-UserBriefingConfig
  • Set-VivaInsightsSettings

[玩转系统] 如何使用 PowerShell 连接和管理 Exchange Online

请注意,Exchange Online 模块中某些 cmdlet 的名称已更改。现在大多数都带有EXO后缀。例如,使用 Get-EXOMailbox 代替 Get-Mailbox,使用 Get-EXOMailboxPermission 代替 Get-MailboxPermission 等。因此,如果您有任何适用于 EXOv1 的脚本,则需要仔细更新它们以与 EXOv2 一起使用。

您可以显示 Exchange 租户中的邮箱列表或有关特定邮箱的信息:

Get-EXOMailbox |ft
Get-EXOMailbox jsergo

[玩转系统] 如何使用 PowerShell 连接和管理 Exchange Online

要显示允许 POP 和 IMAP 访问的用户:

Get-EXOCasMailbox -PropertySets Imap,pop

显示所有邮箱的大小:

Get-EXOMailbox | Get-EXOMailboxStatistics

所有共享邮箱的大小:

Get-EXOMailbox | Where-Object{$_.RecipientTypeDetails -eq "SharedMailbox"} | Get-EXOMailboxStatistics

请注意,ExchangeOnlineManagement 模块中没有 Set-Mailbox cmdlet。问题在于,连接到租户后,其他可用的 Exchange Online cmdlet(超过 750 个)会导入到您的 PowerShell 会话中。首先,您必须获得一个会话名称:

Get-PSSession| select ConfigurationName,CurrentModuleName

使用生成的会话名称,您可以获得可用 cmdlet 的列表:

Get-Command -Module tmp_4amp2awk.dga

[玩转系统] 如何使用 PowerShell 连接和管理 Exchange Online

要更改用户的 SMTP 地址,可以使用以下命令:

Get-EXOMailbox jsergo | Set-Mailbox -EmailAddresses @{Add='[email protected]'}

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

取消回复欢迎 发表评论:

关灯