Показаны сообщения с ярлыком PowerShell. Показать все сообщения
Показаны сообщения с ярлыком PowerShell. Показать все сообщения

10 мая 2011 г.

Скрипт для автоматической очистки ящиков в Exchange 2007/2010 от ненужных сообщений

У нас в компании есть служебные рассылки в которые приходят служебные сообщения с разного рода информацией: ошибки, предупреждения и т.д. Временами оттуда может прилететь “волна” в сотни мегабайт или того больше, т.к. и самих сообщений может быть десятки тысяч, да и их размер в особо неприятных случаях может достигать нескольких десятков мегабайт.

В былые времена это приводило к ступору сервера. Затем мы перешли на Exchange 2007 и сервера стали намного мощнее и падать сервер перестал. Зато получалась такая себе DOS атака, т.к. вся очередь была забита такими сообщениями, а все остальные проходили тяжело. Мы переформировали очереди, проставили приоритеты и все вроде бы исправилось … Но теперь возникла та проблема, что если такая “волна” проходит на праздниках или во время отпуска, то ящик пользователя может заблокироваться.

После некоторого количества проб было решено написать скрипт, который будет чистить папки пользователей от таких сообщений, в случае если эти сообщения старше одного дня. Срок выбран из эмпирических соображений, т.к. практика показала, что сообщения старше суток никому не нужны.

25 мая 2010 г.

Контролируем доступ к чужим ящикам в MS Exchange 2007

В Exchange есть такая интересная возможность как управление чужим ящиком. Любой человек с правами администратора Exchange может дать права пользователю подключиться к чужому ящику. Такая возможность нужна и полезна, например, для того чтобы срочно достать письмо из ящика человека, который в настоящий момент недоступен или для работы с двумя ящиками в Outlook 2007 (Outlook 2010 уже умеет работать с двумя и более ящиками Exchange).

В то же время, это не та возможность, которую можно использовать бесконтрольно, т.к. возможны злоупотребления.

В этом случае на помощь приходит функция, которая появилась в Exchange 2007 SP2 - функция аудита доступа к почтовым ящикам. Эта функция имеет более широкое применение, с ее помощью можно многое записывать в журнал, но я рассмотрю только применительно к вещам, описанным выше.

25 марта 2010 г.

WSUS - сверка списка компьютеров с AD

обновлено 25.03.2010

На блоге Ильи Сазонова обнаружил очень интересный материал: WSUS - сверка списка компьютеров с AD. Да и вообще, там регулярно появляется любопытная информация.

Позволю себе перенести то, что он выложил к себе с некоторыми моими комментариями и модификациями.

Что это и зачем это нужно? В каждой уважающей себя организации используется Active Directory как единый каталог и WSUS для централизованной установки обновлений. Но, по разным причинам, некоторые компьютеры могут не обновляться со WSUS. Причины тому могут быть самые разные: сбой агента обновления, файрволл, еще что-то … Главное – это то, что такие случае нужно выявлять и разбираться с ними индивидуально.

Итак

Текущая версия WSUS имеет API, который позволяет удаленное управление сервером. Чтобы его задействовать, необходимо установить на компьютер клиентскую часть сервера. После чего запускаем оболочку Powershell 2.0 и загружаем WSUS API:

[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")

   Теперь надо подключаемся к удаленному серверу по имени «WSUS»:

$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("WSUS", $false)

   Второй параметр $false говорит о том, что будет использоваться HTTP протокол, а не HTTPS, т.е. не будет шифрования.

Скрипт Ильи работает, если у вас WSUS висит на стандартном порту. У меня же он висит на другом, нестандартном. Как поступить? А вот как (спасибо коллеге, нашел):

$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer("WSUS", $false,port_number)

Где port_number – номер нестандартного порта WSUS

   Теперь получаем список всех компьютеров зарегистрированных на WSUS-сервере:

$WSUScomps = $wsus.GetComputerTargets()

   Каждый элемент массива $WSUScomps это объект, а нам нужны только имена компьютеров. Получаем FQDN имена компьютеров:

$WSUSCompNames = $WSUScomps | ForEach { $_.FullDomainName.ToUpper() }

   Перевод имени в верхний регистр не критичен (по умолчанию Powershell выполняет сравнение строк без учета регистра), но формально все же это надо сделать.

   Следующий шаг – получение списка учетных записей компьютеров из Active Directory:

$ADcomps = (new-object System.DirectoryServices.DirectorySearcher([ADSI]”LDAP://ou=DEPS,dc=DOMAIN,dc=com”,"(&(objectCategory=computer)(!userAccountControl:1.2.840.113556.1.4.803:=2))")).findAll()

   Тут конструкция !userAccountControl:1.2.840.113556.1.4.803:=2 исключает запрещенные (disabled) учетные записи компьютеров. LDAP://ou=DEPS,dc=DOMAIN,dc=RU задает корень поиска в дереве AD. objectCategory=computer – выбираем только учетные записи компьютеров.

   Из объектов учетных записей компьютеров извлекаем имена компьютеров (также формально переводим их в верхний регистр):

$ADCompNames = $ADcomps | ForEach {$_.GetDirectoryEntry().dNSHostName.ToString().ToUpper()}

   И последний шаг – получаем имена компьютеров, которые есть в Active Directory, но отсутствуют в WSUS:

$NoWSUSCompNames = $ADCompNames | Where { $WSUSCompNames -notcontains $_ }

   Теперь нам остается проанализировать полученный список и разобраться почему выявленные компьютеры не получают обновления с WSUS. Для получения списка просто выведу на экран значения

$NoWSUSCompNames

В отдельной записи представлены скрипты, с помощью которых мы “чиним” агентов WSUS на клиентских компьютерах и серверах.

24 августа 2009 г.

Как узнать кто пользуется ActiveSync для Exchange 2007?

Нашел простое и элегантное решение получения списка пользователей, которые подключаются к почте Exchange 2007 с помощью ActiveSync (Mail for Exchange для Nokia и родной клиент на смартфонах на Windows Mobile)

Get-CASMailbox -Filter {HasActiveSyncDevicePartnership -eq $true} | Select Name

15 июня 2009 г.

Как закалялся (внедрялся) Exchange 2007

 

Мысли о внедрении Exchange в нашей компании были давно. Но все, как обычно, упиралось в деньги. Поэтому, мы до начала 2008 года пользовались Mailsite, начиная еще с его бесплатного предка  и заканчивая версией 7. Продукт, в целом, неплохой, достаточно простой в установке и эксплуатации, но не без проблем. Да и с поддержкой у них слабовато. Мог бы выручать форум, но клиентов не настолько много, как хотелось бы, а уж использующих кириллицу – тем более.

В компании давно назревала необходимость в более серьезной и надежной системе, кроме того, актуальным стал вопрос работы пользователей удаленно, в том числе и с мобильных устройств. Перед принятием окончательного решения, весной 2007 года, в сертифицированном учебном центре Microsoft компании Сетевые технологии, мной и нашим сетевым инженером Андреем были прослушаны курсы:

  1. Введение в установку и управление Microsoft Exchange Server 2007
  2. Управление безопасностью электронной почты при использовании Microsoft Exchange Server 2007
  3. Восстановление почтовых серверов и баз данных при использовании Microsoft Exchange Server 2007
  4. Мониторинг и устранение неисправностей Microsoft Exchange Server 2007

Параллельно, совместно с компанией Квазар-Микро, которая в настоящий момент превратилась в Ситроникс, была разработана спецификация и сделан заказ на оборудование и ПО для резервного копирования. Замечу, что проект включал не только Exchange, но еще и внедрение быстрого,  надежного и масштабируемого хранилища, сервер терминалов (Windows Server 2003 x64), сервер баз данных MS SQL 2005 и др.

Для развертывания Exchange (и не только его) были приобретены:

  1. Шасси IBM BladeCenter H
  2. Несколько лезвий HS21
  3. Дисковый массив IBM TotalStorage DS4700
  4. Корзина расширения IBM TotalStorage DS4000 EXP810 (SATA)
  5. Корзина расширения IBM TotalStorage DS4000 EXP810 (Fiber Channel)
  6. Ленточная библиотека IBM System Storage TS3200 и набор картриджей LTO3
  7. BackupExec 11d, в последствии замененный на версию 12.0, а затем и 12.5

В середине лета этот заказ был размещен. Доставка, настройка и монтаж компонентов производилась в период октябрь-январь

Самую критичную роль, Mailbox, было решено развернуть на SCC кластере из двух лезвий, остальные роли, HUB и CAS – на отдельном лезвии. Еще один сервер был зарезервирован для ISA2006

Наконец, в компании Аспарк был размещен заказ на лицензии Microsoft по программе Open License. Для Exchange было приобретено:

  1. Windows Server 2003 Enterprise Edition – 2 шт.
  2. Windows Server 2003 Standard Edition – 1 шт.
  3. Exchange 2007 Enterprise Edition – 2 шт.
  4. Exchange 2007 Standard Edition – 1 шт.
  5. Exchange Server Standard CAL – 800 шт
  6. Exchange Enterprise CAL – 30 шт.
  7. ISA Server 2006 Standard – 1 шт.

Замечу, что Windows Server CAL, свободные лицензии Windows Server, а так же лицензии на MS Office 2007 у нас уже были.

Процесс внедрения всего проекта в целом, где Exchange был одним из компонентов, занял около года.  Одной из самых трудоемких задач был перевод всех компьютеров в офисе с MS Office XP на MS Office 2007 и перенос почты сотрудников.

Перенести напрямую сообщения, адресную книгу, списки рассылок и другие настройки из MailSite  было невозможно, но к счастью, в Exchange был PowerShell а ребята из Quest Software выпустили свои Free PowerShell Commands for Active Directory! Мной было написано несколько десятков скриптов, которые позволили автоматизировать, а следовательно и существенно уменьшить количество ошибок, процесс создания групп хранения, баз, пользователей, списков рассылок и много другого, что понадобилось на этапе миграции.

Еще через некоторое время был запущен защищенный доступ для удаленных (OWA) и мобильных (ActiveSync) пользователей организованный посредством публикации на сервере ISA 2006, развертыванием которого занимался наш сетевой инженер Андрей.

В настоящий момент мы имеем надежное, масштабируемое решение для коллективной работы нашей компании.

К сожалению, кризис спутал наши планы, иначе было бы что рассказать еще и о внедрении системы виртуализации :-)