Я получил много откликов на статью о компаниях, разрабатывающих программы для получения отчетов из Office 365. Пользователи часто спрашивают, почему бы не получать отчеты просто с помощью PowerShell? Хороший вопрос. Но даже если бы я умел это делать, то не думаю, что стоит идти таким путем.

Действительно ли так необходимо тратить деньги на покупку дополнительного программного обеспечения для получения отчетов по информации Office 365?

Тот же самый вопрос можно было бы задать и относительно внутрикорпоративной локальной установки Exchange, потому что необходимость разработки продуктов построения отчетов для Office 365 связана с тем, что системы отчетности никогда не были сильной стороной Microsoft. Конечно, в Office 365 предусмотрены какие-то базовые отчеты, но в них нет ничего примечательного. Для корпоративной версии Exchange ситуация еще хуже, и для ее изменения ничего не делалось с незапамятных времен.

В любом случае системы создания отчетов для Office 365 существуют, и вы можете на досуге их опробовать. Однако перей­дем к вопросу о том, почему не стоит для построения отчетов использовать PowerShell. Прежде всего, обратите внимание, что PowerShell годами использовался для получения отчетов о почтовых ящиках и других объектах, и в Интернете можно найти немало примеров хорошо сформатированных отчетов. В качестве примера можно привести отчет по среде Exchange Стива Гудмена (www.stevieg.org/2011/06/exchange-environment-report/) и отчет о проверке состояния Exchange Пола Каннингема (exchangeserverpro.com/powershell-script-health-check-report-exchange-2010/). Рекомендую оба.

PowerShell, без сомнения, может использоваться для создания хорошо оформленных и содержательных отчетов. Но есть некоторые особенности, которые делают PowerShell не самым подходящим инструментом для создания отчетов. Например, в Office 365 имеется отчет, называемый «Активные и неактивные почтовые ящики», который предоставляет информацию о том, сколько пользователей за последнее время не открывали свои почтовые ящики. Такая информация очень важна для администратора Office 365, так как вы можете ежемесячно платить немалые суммы за неиспользуемые почтовые ящики (см. экран). Эксперт по использованию PowerShell может сказать, что эти данные легко получить, выполнив приведенную ниже команду, которая определяет почтовые ящики, не открывавшиеся пользователями в течение последних 30 дней. Ящики, для которых не указано последнее время регистрации пользователя, вообще никогда не открывались.

[PS] C:> Get-Mailbox -RecipientType
   'UserMailbox' | Get-MailboxStatistics
   | Sort-Object LastLogonTime | Where
   {$_.LastLogonTime
   -lt ([System.DateTime]:: Now).AddDays
   (-30)} | Format-Table DisplayName,
   LastLogonTime

Вывод этой команды приведен в таблице.

 

Вывод команды

Это очень ценная информация, однако среда PowerShell имеет определенные особенности:

  • Может работать очень медленно, если задействовано 100 или более почтовых ящиков.
  • Очень хороша для получения данных из Exchange, однако не так сильна при форматировании данных для печати. С другой стороны, PowerShell может сгенерировать данные в виде файла CSV, который удобно обрабатывать в Excel (если вы разбираетесь в графиках и диаграммах).
  • Не предоставляет возможности анализа данных за период времени (как видно из примера, команды, извлекающие данные из Office 365, не обеспечивают детализированный уровень информации, зачастую необходимый).

Приведенный пример отчета наглядно демонстрирует возможности PowerShell. Однако такие отчеты требуют выполнения ряда операций вручную и нескольких часов времени. А поскольку они распространяются бесплатно, то нет никакой гарантии, что вы сможете найти в Интернете сценарии для получения именно тех отчетов, которые вам нужны. И даже если вы найдете нужный сценарий, потребуется убедиться, что он делает то, для чего предназначен, и сможет работать в вашей среде. К тому же вы видели предупреждение системы безопасности о рисках запуска кода, загруженного из Интернета, не так ли?

И наконец, когда вы создаете собственные отчеты в PowerShell, вам приходится обеспечивать их работоспособность при выпуске корпорацией Microsoft обновлений команд, добавлении новой функции или выходе очередных версий PowerShell для Office 365. Одним может понравиться такая ситуация с написанием и поддержкой собственных отчетов, а другие сочтут, что будет проще купить средства построения отчетности у компании, которая специализируется в этой области.