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

[玩转系统] 自动化 Exchange PowerShell 脚本

作者:精品下载站 日期:2024-12-14 13:38:22 浏览:16 分类:玩电脑

自动化 Exchange PowerShell 脚本


[玩转系统] 自动化 Exchange PowerShell 脚本

随着 OAuth2 身份验证和 MFA(多重身份验证)的引入,自动化 Exchange PowerShell 脚本变得更加复杂。

如果您要求所有用户使用 MFA 进行身份验证(您应该这样做)——如何创建无人值守脚本?

幸运的是,从版本 2.0.3 开始,Exchange Online Management 模块 (ExoV2) 包含了一个巧妙的解决方案:

Azure 应用程序和基于证书的身份验证

ExoV2(v2.0.3 及更高版本)具有新参数来提供 AppId 和证书指纹

这些参数允许您的脚本

  • 在 Azure 应用程序 (AppId) 的上下文中执行 Exchange Online PowerShell 命令。
  • 使用证书(指纹)对应用程序进行身份验证。

假设您已为 Azure 应用程序分配了适当的权限,这就是我们所需要的。

Exchange PowerShell 自动化配置分步指南

您需要执行以下步骤来设置 Exchange PowerShell 自动化:

  1. 生成用于身份验证的证书。
  2. 设置应用程序注册。
  3. 向应用程序分配 API 权限(并授予管理员同意)。
  4. 将基于证书的凭据分配给应用程序注册。
  5. 将 Exchange 权限分配给应用程序。

下面详细介绍了这五个步骤:

Easy365管理器

适用于 Active Directory 的 Office 365 管理工具

直接从 AD 执行所有日常 Office 365 管理

删除本地 Exchange 服务器

1.生成身份验证证书

如果您有 CA(证书颁发机构)基础设施,则可以使用它来生成证书。

如果没有,您可以生成一个同样可以正常工作的自签名证书:Azure 应用程序不需要信任颁发者。

您需要证书中的两个文件:

  • .pfx 文件 - 包含私钥,并安全地存储在调度服务器上您的调度帐户的个人证书存储中。
  • .cer 文件 - 仅包含公钥并上传到 Azure 应用程序,以允许您使用相应的(秘密)私钥进行身份验证。

使用以下代码生成新证书并导出 .pfx 和 .cer 文件:

# Create certificate with expiry of 5 years
$mycert = New-SelfSignedCertificate -DnsName "easy365manager.com" -CertStoreLocation "cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(5) -KeySpec KeyExchange
# Export certificate to .pfx file
$mycert | Export-PfxCertificate -FilePath C:\tmp\ExoAutomateCert.pfx -Password $(ConvertTo-SecureString -String "$omeP@ssw0rd" -AsPlainText -Force)
# Export certificate to .cer file
$mycert | Export-Certificate -FilePath C:\tmp\ExoAutomateCert.cer

该证书是在运行代码的用户的个人证书存储中创建的。

这意味着,如果您计划使用登录系统上的登录帐户自动执行脚本,则不需要 .pfx 文件(备份除外)。

要在其他系统/用户帐户上使用证书,您必须以交互方式登录并从 .pfx 文件导入证书。

.cer 文件将用于在后续步骤中在 Azure 应用程序上设置身份验证。

2. 设置 Azure 应用程序

要设置新的 Azure 应用程序,您必须登录到 Azure 门户。选择 Azure Active Directory,然后单击“应用程序注册”或点击直接链接。

从那里,您可以通过单击“新注册”来创建新的应用程序注册:

提供一个有意义的名称,仅选择此组织目录中的帐户,并设置一个 Web 重定向 URI 以用作对身份验证请求的响应(与我们的使用不太相关)。

[玩转系统] 自动化 Exchange PowerShell 脚本

[玩转系统] 自动化 Exchange PowerShell 脚本

您现在应该能够验证 Azure 应用程序是否已创建:

[玩转系统] 自动化 Exchange PowerShell 脚本

注意应用程序(客户端)ID。这是我们在使用 PowerShell 连接到 Exchange Online 时将用作 -AppId 参数的内容。

3. 设置API权限

到目前为止,我们的Azure App还没有权限。

由于我们将使用它进行自动化 Exchange Online 管理,因此我们需要分配 Exchange.ManageAsApp 权限。

选择 API 权限,单击“添加权限”,选择我的组织使用的 API,通过键入 Office 365 缩小结果范围,然后选择 Office 365 Exchange Online:

[玩转系统] 自动化 Exchange PowerShell 脚本

从下一个菜单中,选择应用程序权限,展开 Exchange,选择 Exchange.ManageAsApp,然后单击添加权限:

[玩转系统] 自动化 Exchange PowerShell 脚本

最后,您需要同意该应用程序。

单击“授予管理员同意”,然后单击“是”接受:

[玩转系统] 自动化 Exchange PowerShell 脚本

现在,您将在 API 权限旁边看到一个绿色的复选标记。

4. 将基于证书的凭据分配给应用程序注册

下一步需要将步骤 1 中生成的证书设置为 Azure 应用程序中的有效凭据。

单击“证书和机密”,单击“证书”,单击“上传证书”,浏览到步骤 1 中的 .cer 文件,添加说明,然后单击“添加”:

[玩转系统] 自动化 Exchange PowerShell 脚本

现在,您将在列表中看到证书,包括我们将在脚本中用作参数的指纹:

[玩转系统] 自动化 Exchange PowerShell 脚本

5. 为应用程序分配 Exchange 权限

最后,我们只需为我们的应用程序分配适当的 Azure 角色。

如果我们的脚本仅管理收件人(邮箱和其他收件人对象),那么我们需要分配 Exchange 收件人管理员角色。

从 Azure 门户打开 Azure Active Directory,然后单击“角色和管理员”。或者点击此直接链接。

在过滤器中输入“exchange”,然后单击“Exchange 收件人管理员”:

[玩转系统] 自动化 Exchange PowerShell 脚本

通过单击“添加分配”并单击在步骤 2 中创建的应用程序标识,将 Exchange 收件人管理员角色分配给我们的新应用程序:

[玩转系统] 自动化 Exchange PowerShell 脚本

使用基于证书的身份验证运行自动化脚本

您现在可以开始设置自动化脚本。

检查您的帐户是否持有正确的证书总是一个好主意。您可以使用以下代码检查您的证书存储并查看指纹:

PS C:\> Get-ChildItem Cert:\CurrentUser\My | ft

   PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint                                Subject
----------                                -------
D05DEA539D7D560F342E3CBED9163EB79334F9EC  CN=easy365manager.com

如果一切正常,您现在可以使用证书通过 PowerShell 连接到 Exchange Online,无需用户干预:

PS C:\> Connect-ExchangeOnline -AppId "81d79cde-c79e-4608-ba15-8d1e66eab6bc" -CertificateThumbprint "d05dea539d7d560f342e3cbed9163eb79334f9ec" -Organization "skrubbeltrang.onmicrosoft.com"

----------------------------------------------------------------------------------------
This version of EXO PowerShell V2 module contains new REST API backed cmdlets which doesn't require WinRM
for Client-Server communication and therefore you can now run these cmdlets after turning off WinRM Basic
Auth in your client machine thus making it more secure.

The cmdlets in the downloaded module are resilient to transient failures, handling retries and throttling errors inherently.
The service side execution of these cmdlets have been optimized to perform better than the RPS (V1) cmdlets.
Unlike the EXO* prefixed cmdlets, the cmdlets in this module supports full functional parity with the RPS (v1) cmdlets.
For more information check https://aka.ms/exov2-module
Send your issues, product improvement suggestions and feedback to [email protected]
----------------------------------------------------------------------------------------

PS C:\> get-mailbox lene.hau

Name                      Alias           Database                       ProhibitSendQuota    ExternalDirectoryObjectId
----                      -----           --------                       -----------------    -------------------------
Lene Hau                  lene.hau        EURP189DG065-db131             49.5 GB (53,150,2... 2df91b7a-78a7-47cf-b58c-e294f302fd71

概括

如本概述所示,设置运行自动化 PowerShell 脚本的先决条件有点乏味。

然而,一旦你把所有的细节都排列好,脚本的执行就非常容易了:

只需在您的系统上导入私钥证书并在您的连接中设置参数 - 您就可以开始了!

如果您现在已经在想:“我如何审核我的自动化脚本正在做什么?”你应该阅读这篇文章。

整合您的 AD 和 Office 365 管理

混合 Office 365 管理对许多公司和组织来说都是一个真正的痛苦。

越来越多的公司开始整合 AD 和 Office 365 管理。

大多数解决方案都会引入新的 Web 应用程序,难以学习且成本高昂。

然而,存在一种解决方案,可以简单地扩展 AD 用户和计算机的功能 - 二十多年来深受管理员喜爱的管理工具。

借助 Easy365Manager,您可以获得有关用户属性的额外选项卡,满足您日常管理 Office 365 和 Exchange Online 的所有需求:

[玩转系统] 自动化 Exchange PowerShell 脚本

[玩转系统] 自动化 Exchange PowerShell 脚本

通过这些新选项卡,任何人(包括初级 IT 支持人员)都可以开始设置用户日历权限。通常需要二级 PowerShell 脚本编写技能的内容:

Easy365Manager 是 AD 用户和计算机的简单 .dll 扩展。

它不需要更改基础设施,并且可以在不到一分钟的时间内完成安装。

立即下载 30 天试用版。

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

取消回复欢迎 发表评论:

关灯