Несколько скриптов Exchange PowerShell

 Решил поделиться несколькими скриптами, которые написал недавно. Надеюсь, что некоторые из вас могут найти их полезными, по крайней мере, в какой-то момент они смогут вам пригодиться.

Скрипт 1

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

get-mailbox-database $(get-mailboxdatabase | where-object {$_. name-like " * Database1*"}) / Format-имя таблицы, Database-wrap-autosize

Скрипт2

Получить статистику по конкретному пользователю не зная целиком имени или если вы хотите узнать статистику по всем пользователям у которых есть имя Джон или фамилия Доу:

Get-MailboxStatistics-server serverhere / Where-Object {$_.DisplayName-как " * MailboxUserName*"} / Format-таблица DisplayName, ItemCount, TotalItemSize

Скрипт 3

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

$mbx = Get-ExchangeServer | Where-Object {$_.IsMailboxserver -eq $true}
foreach ($server в $mbx) {
 Get-Mailboxstatistics-Server $Server / Where-Object { $_.DisconnectDate-ne $null} / Format-Table DisplayName, ItemCount,OriginatingServer -wrap
}

Скрипт 4

На основе CSV-файла экспортируйте контакты пользователей, созданные после определенной даты начала, в PST-файл. Копия того, как должен быть отформатирован CSV, находится здесьХотя CSV содержит несколько столбцов, сценарий по умолчанию использует только столбец имя учетной записи. Если вы хотите изменить столбцы, которые он использует, вы можете изменить строку ниже, которая начинается с $AdName =. После того как скрипт извлекает имя в поле Имя учетной записи, он находит почтовый ящик с помощью команды Get-Mailbox с именем, указанным в поле Имя учетной записи.

$file = " pstusers.csv"
$PSTLocation = "C:\PSTs"
$StartDate = " 20.03.2009"

############################################
####### Не изменяйте ниже этой строки #######
############################################
$erroractionpreference = " SilentlyContinue"
если (!(Test-Path-path $PSTLocation)) {
 Write-Host "создание каталога $PSTLocation" -цвет переднего плана желтый
 New-Item-ItemType "Directory" - Path $PSTlocation
}
if (Test-Path $file) {
 $excel = импорт-CSV $файл
 foreach ($строка в $excel) {
 $AdName = $ line."имя учетной записи"
 $Mailbox = Get-Mailbox $AdName
 if ($почтовый ящик) {
 Write-Host " $AdName экспортируется в $PSTLocation"
 $Mailbox / Export-Mailbox-PSTFolderPath $PSTLocation-StartDate $StartDate-ExcludeFolders "\Inbox", "\Deleted Items", "\Draftings", "\Junk E-mail", "\Outbox", "\Sent Items", "\Journal"," \ Calendar", "\Notes", " \Tasks"
 }
 else { Write-Warning " почтовый ящик$ADName не существует" }
 }
}
еще {
 Write-Warning "файл $file не существует"
}

Скрипт 5

Если вы знакомы с Quest Notes Migrator for Exchange, возможно, у вас была возможность перенести данные в PST-файл. Вы увидите, что PST переносится вместе с отображаемым именем пользователя. Например, если бы мы перенесли почтовый ящик Notes Elan Shudnow в PST, то имя файла PST было бы Elan Shudnow.pst. Многие люди не захотят переносить PST непосредственно из Quest NME в домашнюю папку пользователя, потому что эта домашняя папка пользователя может быть расположена на удаленном сайте, а открытие файла PST по сети на самом деле не очень хорошая идея, особенно на больших расстояниях.

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

# Установите местоположение для запуска PST-файлов
Set-Location "E:\"

$pstData = Get-ChildItem-recurse | Where-Object {$_. Name-like "*.pst"}

функция Get-HomeDirectory ($displayName) {
 $ads = New-Object System.DirectoryService.DirectorySearcher ([ADSI]")
 $ADSI.filter = "(&(objectClass=Person)(displayName=$displayName))"
 $s = $ ads.FindOne()
return $s. GetDirectoryEntry ().homeDirectory } foreach ($pstUser в $pstData) { $PSTName = $pstUser.Name $PSTDisplayName = $pstUser. Name. split (".") [0] $PSTDisplayName = $PSTDisplayName.split ("-") [0] $Path = $PSTUser.DirectoryName + " \ " + $PSTUser.Name $Directory = Get-HomeDirectory $PSTDisplayName Copy-Item $Path $Directory }