Скрипт для просмотра дискового пространства на серверах Exchange


Иной раз нужно быстро оценить сколько свободного места на дисках, где располагается Exchange Server и почтовые базы. Например, Exchange начинает отключать свои сервисы, если на системном диске (где по умолчанию лежит очередь) мало места (менее ~8 Гб), а если место на диске с базой закончилось, то она будет размонтирована (точнее именно эта копия). Просмотреть состояние томов Exchange поможет маленький скрипт

Согласно рекомендациям продуктовой группы и скриптам от калькулятора тома для баз данных подключаются к системному диску в виде точек монтирования (и у них нет буквы диска).

Предлагаемый скрипт покажет вам не только заполнение диска C:, но и томов, которые к нему подмонтированы как mount point. Первую строку вы можете поправить, чтобы получить список серверов, которые вас интересуют. Моя команда возвращает имена всех Exchange серверов за исключением тех, имя которых начинается с «ME» (пограничные серверы, к которым нет доступа). Конечно ничто не мешает вам заменить в скрипте «C:», но что-то нужное вам.

Cкрипт оптимизирован для быстрого выполнения.

Код скрипта на Powershell:

$servers = Get-ExchangeServer | ? Fqdn -notmatch "^ME\d" | Select -ExpandProperty Fqdn
gwmi Win32_Volume -Filter "Caption LIKE 'C:%'" -ComputerName $servers |
Select SystemName,Caption,
@{Name="Capacity";Expression={[math]::Round($_.Capacity/1gb,4)}},
@{Name="FreeSpace";Expression={[math]::Round($_.FreeSpace/1gb,4)}},
@{Name="% Free";Expression={[math]::Round($_.FreeSpace/$_.Capacity*100,2)}},
@{Name="UsedSpace";Expression={[math]::Round(($_.Capacity-$_.FreeSpace)/1gb,4)}},
@{Name="% Used";Expression={[math]::Round(($_.Capacity-$_.FreeSpace)/$_.Capacity*100,2)}}

Скрипт возвращает объекты, а не форматированный вывод, что позволяет вам при необходимости использовать результаты для дальнейшей обработки. Для красивого отображения в конце надо добавить Format-Table или Out-GridView:

$servers = Get-ExchangeServer | ? Fqdn -notmatch "^ME\d" | Select -ExpandProperty Fqdn
$size = gwmi Win32_Volume -Filter "Caption LIKE 'C:%'" -ComputerName $servers |
Select SystemName,Caption,
@{Name="Capacity";Expression={[math]::Round($_.Capacity/1gb,4)}},
@{Name="FreeSpace";Expression={[math]::Round($_.FreeSpace/1gb,4)}},
@{Name="% Free";Expression={[math]::Round($_.FreeSpace/$_.Capacity*100,2)}},
@{Name="UsedSpace";Expression={[math]::Round(($_.Capacity-$_.FreeSpace)/1gb,4)}},
@{Name="% Used";Expression={[math]::Round(($_.Capacity-$_.FreeSpace)/$_.Capacity*100,2)}}
$size | ft -AutoSize
$size | Sort SystemName | ft -AutoSize
$size | Sort SystemName,Caption | ft -AutoSize
$size | Sort Caption | ft -AutoSize
$size | Sort "% Free" | ft -AutoSize
$size | Sort FreeSpace | ft -AutoSize
$size | Out-GridView
Реклама

комментария 2

  1. «подключаются к системному диску в виде точек монтирования»

    а зачем так?

    • Ent версия поддерживает до 100 баз. Если для каждой свой диск, то надо 100 букв. Это и неудобно, и невозможно.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

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