首先只是说我的powershell技能有限,所以请保持温和; - )......
所以我使用microsoft Orchestrator构建了4或5个Runbook,基本上运行了一些远程PowerShell脚本,这些脚本执行各种简单的交换任务,例如设置OutOfOffice回复,启用邮箱,创建具有各种权限的共享邮箱等。一直在使用相同的基本连接结构/方法,这些工作正常,即
$ExchangeCAS = "<CASServerName>"
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<CASServerNameFQDN>/PowerShell/
import-PSSession $Session
<script body with exchange cmdlets>
remove-PSSession $Session
但是,我试图创建一个额外的Runbook来自动添加IP地址作为中继到我们的4个中心服务器 - 它是一个非常基本的脚本(我从互联网上挖出/调整)但是它在运行时不起作用来自Orchestrator。当我从安装了Exchange Tools的服务器上的Powershell ISE运行它时,它确实可以正常工作,并且其他交换(类似)脚本工作的事实至少会排除执行Orchestrator服务帐户的任何权限问题剧本。以下是我试图从Orchestrator作为.Net活动运行的完整脚本,并在orchestrator服务器上使用powershell ISE进行测试: -
$ExchangeCAS = "<ExCAS>"
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<ExCASFQDN>/PowerShell/
import-PSSession $Session
# Get Receive Connectors to update
$listofIPs = Import-Csv \\<TargetSERVER>\d$\psscripts\MailboxRightsScript\scorch\AddIPlist.TXT
$recCons= Get-ReceiveConnector | Where {$_.Name -match"Anonymous Relay"}
ForEach ($recCon in $recCons)
{
Write-Host "Updating", $recCon.Identity
forEach($line in $listofIPs)
{
$recCon.RemoteIPRanges +=$line.IP
}
Set-ReceiveConnector $recCon -RemoteIPRanges $recCon.RemoteIPRanges
}
remove-PSSession $Session
我可以从Orchestrator服务器ISE看到的错误如下:
无法处理参数&#39; Identity&#39;的参数转换。无法转换&#34; \匿名中继&#34;类型的值&#34; Deserialized.Microsoft.Exchange.Data.Directory.SystemConfiguration.ReceiveConnector&#34;至 type&#34; Microsoft.Exchange.Configuration.Tasks.ReceiveConnectorIdParameter&#34;。
从拖网浏览一些文章来看,这似乎是一个问题,如何在本地和远程PowerShell之间传递数据,以及&#39;水化&#39;对象TBH这些讨论的很多细节在涉及到PowerShell时有点过头了,所以不希望变得懒惰任何人都能够根据我上面尝试的内容提供一个PowerShell脚本解决方案,我可以将其作为一个Orchestrator的.net活动,用于添加IP地址/地址(更喜欢输入文件)作为中继。如果能够轻松修改解决方案以删除地址作为中继,那将是一件好事。
任何帮助都非常感谢...
答案 0 :(得分:0)
使用服务器区分名称。它会起作用
Set-ReceiveConnector $recCon.DistinguishName -RemoteIPRanges $recCon.RemoteIPRanges