使用PowerShell管理Exchange Server 2016

使用PowerShell管理Exchange Server 2016

Nicolas Prigent发表于2017年3月1日

 

使用PowerShell管理Exchange Server 2016

PowerShell已成为管理Microsoft服务器产品的首选工具。系统管理员可以充分利用PowerShell来管理角色和执行例行管理任务。通过使用命令行,sysadmins能够:

  • 创建一个邮箱
  • 配置接收连接器
  • 生成自定义报告
  • 管理通讯组成员,权限和组类型
  • 管理交换服务
  • 等等。

在本文中,我们不会介绍所有Exchange Management cmdlet,但我将描述几个示例以指导您朝着正确的方向发展。在所有Exchange Server版本中,Exchange安装会自动配置许多设置。因此,最好单独浏览所有设置以熟悉您的Exchange Server。

交换管理外壳

感谢上一篇文章,您已经安装了所有内容。现在是时候使用Exchange命令行管理程序控制台配置Exchange服务器了。它是什么?EMS(Exchange命令行管理程序)基于Microsoft Windows PowerShell,它提供了强大的命令行界面来执行和自动化管理任务。使用Exchange命令行管理程序,可以管理Exchange Server 2016的各个方面。

如何运行Exchange命令行管理程序?

让我们看一下可以在脚本环境中使用EMS的几种方法。安装Exchange Server时,会同时安装Exchange工具和Exchange工具,从而为您提供EMS。

使用PowerShell管理Exchange Server 2016

单击开始> Microsoft Exchange Server 2016> Exchange命令行管理程序。

使用PowerShell管理Exchange Server 2016

如您所见,它只是将加载Exchange PowerShell模块的“ powershell.exe”的自定义版本。您可能需要从PowerShell控制台手动连接到Exchange服务器。因此,让我们从创建PowerShell会话开始:

 
 
 
 
 
 
1
2
3
PS > $session = New-PSSession -ConfigurationName microsoft.exchange -ConnectionUri
 
https://mbx01.get-cmd.local/powershell

您需要手动指定要连接的服务器。接下来,您应该能够使用Import-PSSession cmdlet加载Exchange模块:

 
 
 
 
 
 
1
PS > Import-PSSession $session

使用PowerShell管理Exchange Server 2016

现在,您可以通过运行Get-Mailbox cmdlet来比较两个控制台,以列出Exchange Server上的所有邮箱并确认结果是否相同:

使用PowerShell管理Exchange Server 2016

您必须使用哪一个?好吧,这取决于您!

检查Microsoft Exchange Server状态

在配置Exchange之前,我们只需检查Exchange服务是否已启动:

 
 
 
 
 
 
1
2
3
PS > Get-Service -Name *Exchange* | select Status, DisplayName | sort Status | ft -Au
 
toSize

使用PowerShell管理Exchange Server 2016

我不想使用IMAP和POP,因此这些Windows服务已停止。现在,我们可以检查一些有关我们的Exchange Server的有用信息:

 
 
 
 
 
 
1
2
3
PS > Get-ExchangeServer | select Fqdn, ServerRole, AdminDisplayVersion, IsEdgeServer
 
| ft -AutoSize

使用PowerShell管理Exchange Server 2016

如何知道哪些cmdlet可用于配置Exchange?

当您打开控制台时,EMS向您显示一些有用的提示。因此,您可以运行以下命令以仅显示Exchange cmdlet:

 
 
 
 
 
 
1
PS > Get-ExCommand

使用PowerShell管理Exchange Server 2016

您可以在TechNet网站上获取完整列表:

https://technet.microsoft.com/zh-CN/library/bb124413(v=exchg.160).aspx

配置Exchange Server 2016

现在,我们可以从配置接受的域和电子邮件地址策略开始。接受的域是您配置为接收电子邮件的SMTP名称空间。要创建一个接受域,请使用以下命令:

 
 
 
 
 
 
1
PS > New-AcceptedDomain -Name <Name> -DomainName <Domain> -DomainType <Authoritative | InternalRelay | ExternalRelay>

 

使用PowerShell管理Exchange Server 2016

我们可以验证是否已成功创建了接受域并将其设置为默认域。

使用PowerShell管理Exchange Server 2016

使用New-EmailAddressPolicy cmdlet创建电子邮件地址策略:

 
 
 
 
 
 
1
2
3
PS > New-EmailAddressPolicy -Name 'All External Users' -RecipientContainer 'get-cmd.local/External' -IncludedRecipients 'AllRecipients' -Priority 'Lowest' -EnabledEmailAddressTemplates 'SMTP:%g.%[email protected]'
 
PS > New-EmailAddressPolicy -Name 'All Internal Users' -RecipientContainer 'get-cmd.local/Internal' -IncludedRecipients 'AllRecipients' -Priority '1' -EnabledEmailAddressTemplates 'SMTP:%g.%[email protected]'

Exchange要求您使用变量来定义电子邮件地址的本地部分。下表(来自TechNet网站)描述了这些变量:

使用PowerShell管理Exchange Server 2016

使用PowerShell管理Exchange Server 2016

连接器

您必须创建一个发送连接器才能将出站邮件路由到Internet。我建议您通过智能主机(反垃圾邮件网关)路由出站邮件。

 
 
 
 
 
 
1
PS > New-SendConnector -Internet -Name SendToInternet -AddressSpaces * -FrontendProxyEnabled:$trueSmartHosts AntiSpamGW01.get-cmd.com

此连接器将通过Internet发送电子邮件。该-FrontendProxyEnabled参数设置为True。这意味着Exchange实际上将通过CAS服务器将出站电子邮件代理到Internet。

使用PowerShell管理Exchange Server 2016

请注意以下信息:

  • Exchange不会自动创建默认的发送连接器
  • 基本连接器将通过DNS解析发送到Internet

请注意,如果要在Exchange上测试SMTP连接器,可以运行以下命令:

 
 
 
 
 
 
1
PS > Send-MailMessageFrom sender@SenderDomain.comTo recipient@RecipientDomain.comSubjectTest SMTP Connector” –BodyTest mail-SmtpServer smtp.domain.com

Exchange Server 2016使用接收连接器来控制来自Exchange组织外部的邮件服务器的入站SMTP连接。Exchange创建一个默认的接收连接器:

使用PowerShell管理Exchange Server 2016

但是,如果您需要创建一个新的,请使用以下命令:

 
 
 
 
 
 
1
PS > New-ReceiveConnector -Name FromSmartHost -Usage Custom -Bindings 192.168.0.143:25 -RemoteIPRanges 192.168.0.200

 

监控Exchange服务器

如何检查电子邮件队列的内容?

很高兴知道如何检查电子邮件队列。这对于确定邮件流是否流畅很有用。Exchange Server上有三种可用的队列:

  • 提交:等待传输代理处理的邮件
  • 无法访问:无法传递到目的地的邮件
  • 毒害消息:分类为服务器危险消息。

要检查提交队列的内容,请运行以下命令:

 
 
 
 
 
 
1
PS > Get-Queue -Identity Submission

使用PowerShell管理Exchange Server 2016

Exchange Server有一些有用的日志,您可以检查。使用Get-MessageTrackingLog cmdlet搜索存储在邮件跟踪日志中的邮件传递信息。

 
 
 
 
 
 
1
PS > Get-MessageTrackingLog -start '[date it started]' -resultsize unlimited | where-object {$_.Sender -like '*domain.com'}

您还可以计算Exchange Server处理的电子邮件总数:

使用PowerShell管理Exchange Server 2016

几个月前,我编写了两个PowerShell脚本。第一个允许您从GUI在邮件跟踪日志中执行查询。该脚本可从Microsoft TechNet画廊获得:https : //gallery.technet.microsoft.com/Exchange-2013-Message-875b3eeb

使用PowerShell管理Exchange Server 2016

第二个是针对您的Exchange环境的运行状况检查:https : //gallery.technet.microsoft.com/Exchange-2013-Audit-and-7e16fba5

使用PowerShell管理Exchange Server 2016 StarWind HyperConverged Appliance是一个交钥匙的,完全由软件定义的超融合平台,专门用于密集型虚拟化工作负载。为了带来所需的性能并减少停机时间,该解决方案可以由预算和IT团队资源有限的组织部署。此外,它只需要一个现场节点即可为您的应用程序交付HA,从而使该解决方案更具成本效益。
了解有关➡StarWind HyperConverged Appliance的更多信息

邮箱和通讯组管理

Exchange Server 2016中有不同类型的收件人。安装Exchange 2016之后,您可以创建用户邮箱,这是最常用的邮箱类型之一。但是,您也可以创建资源邮箱和通讯组。让我们看一些例子:

创建用户邮箱

 

 
 
 
 
 
 
1
2
3
4
5
PS > password = Read-Host "Enter password" -AsSecureString
 
Enter password: *********
 
PS > New-Mailbox -UserPrincipalName contact@get-cmd.com -Alias Contact -Name Contact -OrganizationalUnit Users -Password $password -FirstName Nicolas -LastName PRIGENT -DisplayName "Nicolas PRIGENT" -ResetPasswordOnNextLogon $true

使用PowerShell管理Exchange Server 2016

创建资源邮箱

 

 
 
 
 
 
 
1
PS > New-Mailbox -Name "<Identity>"Room

使用PowerShell管理Exchange Server 2016

创建设备邮箱

 

 
 
 
 
 
 
1
PS > New-Mailbox -Name "<Name>" -Equipment

使用PowerShell管理Exchange Server 2016

创建通讯组

 

 
 
 
 
 
 
1
PS > New-DistributionGroup -Name "ITDepartment" -Members contact@get-cmd.com

使用PowerShell管理Exchange Server 2016

请记住,对于New- * cmdlet,通常(但并非总是)有Get- *Set- * cmdlet可用。

管理Outlook / OWA配置

最后,大多数Outlook的Exchange特定功能(例如自动答复)(也称为“外出时的助手”或“ OOF”)也可以使用EMS进行配置。例如,Exchange管理员可以使用Set-MailboxAutoReplyConfiguration cmdlet启用另一个用户的自动答复,而无需登录到邮箱:

 
 
 
 
 
 
1
PS > Set-MailboxAutoReplyConfiguration -Identity <username> -AutoReplyState Enabled -InternalMessage "Your internal message." -ExternalMessage "Your external message."

 

结论

使用1000多个cmdlet可以使用PowerShell和Exchange进行很多操作。我无法涵盖所有​​这些cmdlet,但是本文的目的是描述几个示例并解释PowerShell如何在日常sysadmin任务中为您提供帮助。借助PowerShell,您现在可以轻松创建脚本以在新环境中自动部署和配置Exchange Server 2016。

谢谢阅读!

相关资料: