2016-01-29 10 views
0

во-первых, просто чтобы сказать, что мои навыки PowerShell ограничены поэтому, пожалуйста, быть нежным; -) ...Remote PowerShell вопрос скрипт для добавления IP-адреса в качестве реле - обмен 2010

Так что я построил 4 или 5 с помощью Microsoft, неизбежное Orchestrator по существу запускает несколько удаленных сценариев 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 

Однако, я пытаюсь создать дополнительную книгу, чтобы автоматически добавить I P адресован как ретранслятор для наших 4-х серверных серверов - это довольно простой сценарий (который я выкопал/подстроил из Интернета), но он не работает при запуске из Orchestrator. Он отлично работает, когда я запускаю его из PowerShell ISE на сервере, на котором установлены средства обмена Exchange, и тот факт, что другие сценарии обмена (аналогичные), которые работают, по меньшей мере исключают любые проблемы с разрешениями для учетной записи службы Orchestrator сценарий. Для справки ниже приведено полный сценарий, я пытаюсь запустить из Orchestrator как .Net деятельность, и я тестирование с помощью PowerShell ISE на Orchestrator сервере: -

$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 является как показано ниже:

Невозможно обработать преобразование аргументов по параметру «Идентификация». Невозможно преобразовать значение «\ Анонимное реле» типа «Deserialized.Microsoft.Exchange.Data.Directory.SystemConfiguration.ReceiveConnector» в типа «Microsoft.Exchange.Configuration.Tasks.ReceiveConnectorIdParameter».

Из-за траления через некоторые статьи кажется, что это проблема с передачей данных между локальной и удаленной powershell и «гидратацией» объектов. TBH много деталей этих обсуждений немного над моей головой, когда дело доходит до powershell, поэтому не желая лениться, кто-нибудь сможет предоставить решение сценария powershell, основанное на том, что я пытался, над которым я могу работать как .net от Orchestrator, чтобы добавить IP-адрес/адрес (предпочтительно из входного файла) в качестве реле. Было бы хорошо знать, легко ли изменить решение, чтобы удалить адрес как реле.

Любая помощь очень ценится ...

+0

Вы можете попробовать его со следующими Import-Module (Import-PSSession $ сеанса -AllowClobber) -Global, вместо Import-PSSession –

+0

Привет там, так что на работу после выходных, чтобы попробовать это и, увы, нет радости ... Когда я запускаю вашу версию из ISE, я все еще вижу те же ошибки, что и преобразование десериализованного значения, как указано выше. Любые другие предложения - очень рады попробовать что-нибудь, чтобы заставить его работать ... ура – user2567758

ответ

0

Использовать сервер различать имя. Она будет работать

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