Exchange 2003 + PowerShell

Вообще у меня нет опыта написания скриптов под Exchange 2003. Но тут возникла задачка, и переборов лень решил попробовать — вдруг что то и получится🙂

задача вот в чем:
1) Существует база 1Т
2) Существует универсальная Сторедж группа
3) Структура 1папка и вней 2милиона подпапок
3)Стандартными средствами назначить всем подпапкам репликацию на 2 сервер не получается(т.к. отвисает по тайм-ауту)
4)Нужен скрипт, который пройдется по каждой попки и проставит в свойствай второй сервер для репликации (типа Propagate setings).

(Орфография автора😉 )

Для начала гугл, запрос «powershell exchange 2003», выпала эта ссылка:

http://thelazyadmin.com/blogs/thelazyadmin/archive/2006/03/23/Using-MSH-With-Exchange-2003.aspx

Текста я не читал, последнего скриншота было достаточно🙂

Попробовал:

Get-WmiObject -class exchange_mailbox -Namespace ROOT\MicrosoftExchangev2 -ComputerName mailsrv1

Получил кучу текста — ящики… Но надо мейлбоксы… Со второй попытки (ну лень мне было по документации лазить🙂 нашел -class exchange_publicFolder ну и для удобства просмотра выведем только нужные свойства в таблицу:

Get-WmiObject -class exchange_mailbox -Namespace ROOT\MicrosoftExchangev2 -ComputerName mailsrv1 | Format-Table name, path

Точно — родные мейлбоксы. Попробуем взять один из них, и рассмотреть поближе:

$pf = Get-WmiObject -class exchange_publicfolder -namespace ROOT\MicrosoftExchangev2 | where {$_.name -eq "Спам"}

Теперь в $pf у нас есть ссылка на папку «Спам» (если конечно была такая папка😉

Ну и можно посмотреть какая информация в ней содержится посмотрев все её свойства:

$pf | format-list *

Содержимое свойства ReplicaList очень похоже на то что нам нужно. Вот только поэксперементировать дальше у меня не получилось, так как сервак один, и реплицировать больше некуда. Но думаю это будет уже не сложно, у $pf.ReplicaList есть такие методы как .Set() и .SetValue(). Их параметры можно посмотреть например так:

$pf.ReplicaList.Set

короче говоря просто вызвав без скобок. Думаю с их помощью можно будет добавить всё что нужно. Ну и не забыть после изменений вызвать метод .Put() для сохранения WMI объекта.

Для множества папок это можно сделать например так:

Get-WmiObject -class exchange_publicfolder -namespace ROOT\MicrosoftExchangev2 | where {$_.name -like "FolderToReplicate*"} | foreach {$_.ReplicaList.setValue($ReplicaToAdd,1); $_.put()}

ОСТОРОЖНО! Я не тестировал эту команду, и наверняка в ней потребуются изменения.

Если кто-нибудь доделает или протестирует это — сообщите пожалуйста🙂

На всё ушло минут 15. Напомню — под exch я никогда не скриптил, и exch2003 создавался еще тогда когда никакого повершелла и в помине не было. Если бы речь шла о Exchange 2007 который интегрирован с PowerShell, то всё было бы еще проще.

Опубликовано в Uncategorized. 4 комментария »

комментария 4 to “Exchange 2003 + PowerShell”

  1. SPV Says:

    Вот что я наваял , но процесс за цикливается.. (Смысл в скрипте пределен прост переместить скопировать удалить за собой. при этом появляется 2-ой сервер для репликации т.к. в верхней папки DATA1 указанно 2 сервера для репликации)

    URLRoot=»file://./backofficestorage/TAILSPINTOYS.COM»
    URLSrc=URLRoot+»/docstore/data1″
    URLDest=URLRoot+»/docstore/TEMP»

    Dim con,rs,rec,rc,ch,all

    Set con=CreateObject(«ADODB.Connection»)
    con.Provider = «ExOLEDB.DataSource»
    con.Open URLroot+»/docstore»

    Set rec=CreateObject(«ADODB.Record»)
    rec.Open URLroot+»/docstore»,con,3

    Set rs=CreateObject(«ADODB.Recordset»)
    rs.Open «select «»DAV:displayname»» from scope (‘shallow traversal of «»»+URLSrc+»»»‘)»,con,3
    all=rs.RecordCount
    rs.MoveFirst

    ch=0

    do while chall

    msgbox rs(«DAV:displayname»)
    rs.save «test «&ch&».xml»,1

    rec.MoveRecord URLSrc+»/»+rs(«DAV:displayname»), URLDest+»/»+rs(«DAV:displayname»)
    rec.CopyRecord URLDest+»/»+rs(«DAV:displayname»),URLSrc+»/»+rs(«DAV:displayname»),,,1
    rec.DeleteRecord URLDest+»/»+rs(«DAV:displayname»)
    ch=ch+1
    rs.MoveNext
    loop
    msgbox «COPY DONE»

  2. SPV Says:

    зацикливается и скрипт крутит по кругу и еще постояно Select происходит…..короче говоря Select динамический чтоль получается…. Есть мысли?

  3. Joker Says:

    А зачем это надо, когда есть простой, удобный и бесплатный тул PFDAVADMIN, который propagates settings что называется на ура?

  4. Xaegr Says:

    2 Joker:
    В данном случае наверняка эта утилита самое то.
    Но вообще, по гибкости и возможностям со скриптами соревноватся тяжко🙂


Обсуждение закрыто.

%d такие блоггеры, как: