Назад | Перейти на главную страницу

Скрипт массового создания папки в Exchange 2010

Мне нужно создать несколько папок в каждом почтовом ящике в нашей организации обмена.

Есть ли быстрый способ добиться этого с помощью сценария PowerShell?

(обратите внимание, что это не общие папки, эти папки должны существовать в почтовом ящике пользователя)

Это можно сделать с помощью API веб-служб Exchange (EWS). Этот сценарий должен создать папку в почтовом ящике (прямо сейчас у меня под рукой нет установленного компьютера E2K10 с EWS 1.1, поэтому я собираю все это вместе из образцов кода и памяти и надеюсь, что это действительно сработает - выглядит правильно). Это должно работать в качестве основы для сценария для итерации по почтовым ящикам, создавая папки (но поскольку я такой болван PowerShell, я оставляю это на ваше усмотрение):

$MailboxName = "mailbox@domain.com"

$dllpath = "C:\Program Files\Microsoft\Exchange\Web Services\1.0\Microsoft.Exchange.WebServices.dll"
[void][Reflection.Assembly]::LoadFile($dllpath)
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2007_SP1)

$windowsIdentity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$sidbind = "LDAP://<SID=" + $windowsIdentity.user.Value.ToString() + ">"
$aceuser = [ADSI]$sidbind

$service.AutodiscoverUrl($aceuser.mail.ToString())

$folderid = new-object  Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Root, $MailboxName)
$RootFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $folderid)

$NewFolder = new-object Microsoft.Exchange.WebServices.Data.Folder($service)
$NewFolder.DisplayName = "Folder_to_Create"
$NewFolder.Save($RootFolder.Id.UniqueId)

Этот сценарий предполагает, что у вас установлен EWS 1.1 и вы вошли в систему с учетными данными, имеющими разрешение на доступ к почтовому ящику темы.