Windows 7,PowerShell 4.0。计算机在Windows域中。
我需要获得SMTP服务器名称(用于使用send-mailmessage cmdlet)。$PSEmailServer是空的。
我阅读了关于这 cmdlet的TechNet页面。但是我看到这个(在TechNet页面上):
此cmdlet可在网上Exchange Server 2016和基于云的服务中获得。
如何获得SMTP服务器名称或其IP地址?
发布于 2019-10-09 07:38:07
如果正确定义,可以通过AD中的SCP记录或Exchange的自动发现DNS记录来设置SMTP服务器地址(主机名或IP )。有一个用于查询SCP的Powershell解决方案,但自动发现解决方案更短,所以我将继续它。
此操作适用于Exchange 2010及更高版本。它也应该与Exchange 2007一起工作,但就我个人而言,我从未使用过它。
您可以获得主机名;$MailServer = [Net.DNS]::GetHostByAddress([Net.DNS]::GetHostEntry("Autodiscover").AddressList[0]).Hostname
或IP地址(作为字符串);$MailServer = [Net.DNS]::GetHostByAddress([Net.DNS]::GetHostEntry("Autodiscover").AddressList[0]).AddressList[0].IPAddressToString
因为GetHostByAddress(string)返回类System.Net.IPHostEntry的实例,所以可以使用一些属性。有关详细信息,请阅读Microsoft。
PS:我知道,这不是为值使用整数索引的最佳实践,但是AddressList是一个字符串数组。因此它没有定义像FirstOrDefault()这样的方法,也没有定义像DefaultAddress这样的属性。到目前为止,这是最优和最实用的解决方案AFAIK。
发布于 2016-02-05 11:55:19
假设计算机是部署了Exchange的域的成员,并且希望将Exchange用作send-mailmessage的STMP中继,则可以在AD配置上下文中询问exchange配置:
import-module activedirectory
$ag = "Exchange Administrative Group (ABCDEFGHIJKLM)" #enter your EAD
$c = "Acme" # Enter your company name (get this form ADSIEdit if unknown)
$sb = ("CN=Servers,CN=" + $ag + ",CN=Administrative Groups,CN=" + $c + ",CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=staff,DC=hsrw")
$server = Get-ADObject -Properties cn, msExchSMTPReceiveConnectorFQDN, msExchSmtpReceiveBindings, msExchSMTPReceiveInboundSecurityFlag -SearchBase $sb -filter { objectClass -eq "msExchSmtpReceiveConnector"}
$server | ft cn, msExchSMTPReceiveConnectorFQDN, msExchSmtpReceiveBindings, msExchSMTPReceiveInboundSecurityFlag这将显示出组织中每个接收连接器的主机名和端口绑定。然后,您必须选择使用哪一个。
因为我不知道你有多少交流知识,我就在这里停下来。如果有什么不清楚的话,就问吧。
https://stackoverflow.com/questions/35221513
复制相似问题