用于添加IP地址作为中继的远程PowerShell脚本问题 - 交换2010

时间:2016-01-29 11:48:48

标签: powershell powershell-remoting exchange-server-2010

首先只是说我的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地址/地址(更喜欢输入文件)作为中继。如果能够轻松修改解决方案以删除地址作为中继,那将是一件好事。

任何帮助都非常感谢...

1 个答案:

答案 0 :(得分:0)

使用服务器区分名称。它会起作用

Set-ReceiveConnector $recCon.DistinguishName -RemoteIPRanges $recCon.RemoteIPRanges