Все посты про работу с почтовым сервером Exchange можно найти по этому тегу.
Где-то здесь уже рассматривалась удалённая работа с почтовым сервером Exchange 2016 c помощью универсального скрипта. Скрипт, представленный ниже, это выжимка из него же, но с одной единственной целью — подключиться к серверу и обновить адресную книгу.
Скрипт пригождается, когда все изменения уже были внесены в Active Directory, а до штатного обновления сервера ещё очень долго.
[System.Console]::Title = "Обновление адресной книги Exchange"
# Переменная с именем почтового сервера #
$server = "MAIL"
$ping = Test-Connection -ComputerName $server -Count 1 -Quiet
if ($ping)
{
try
{
Write-Host "Идёт подключение к почтовому серверу $server" -ForegroundColor Yellow
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$server/PowerShell/ -Authentication Kerberos
Import-PSSession $session
Clear
Write-Host "Запущено обновление адресной книги..." -ForegroundColor Yellow
Get-AddressList | Update-AddressList
Get-GlobalAddressList | Update-GlobalAddressList
Get-OfflineAddressBook | Update-OfflineAddressBook
Write-Host "Обновление завершено!" -ForegroundColor Green
Sleep(15)
Exit
}
catch
{
Write-Host "Ошибка обращения к почтовому серверу $server" -ForegroundColor Red
Sleep(15)
Exit
}
}
else
{
Write-Host "Не удалось подключиться к почтовому серверу $server" -ForegroundColor Red
Sleep(15)
Exit
}
Напомню, что ConnectionUri в конфигурации Microsoft.Exchange командлета New-PSSession (см. переменную $session) сможет распознать url-адрес и подключиться к серверу только если указано имя почтового сервера, а не его IP. Специально для этого и существует переменная $server.
После обновления скрипт закроется сам. Ко всем событиям добавлен Sleep(15) для наглядности работы.