Поиск по сайту:

Добавление пользователей в политику хранения Office 365 с помощью PowerShell


Чтобы сохранить контент Office 365, вы можете использовать политику удержания, которую можно создать в Центре безопасности и соответствия. Важным шагом является добавление пользователей в политику. Это можно легко сделать с помощью PowerShell. Таким образом, мы также можем автоматически добавлять новых пользователей в существующую политику удержания, запуская скрипт один раз в день или в неделю.

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

Используя PowerShell, мы можем получить список всех ваших почтовых ящиков Exchange и список всех текущих добавленных местоположений Exchange (пользователей) в политике хранения. Сравнив эти два списка, мы получим список отсутствующих почтовых ящиков, которые мы можем добавить в политику хранения с помощью PowerShell.

Примечание по импорту: сначала подключитесь к Exchange Online, а затем к Центру безопасности и соответствия. В противном случае вы получите другой результат от команды get-recipient.

Подключение к Office 365 Exchange Online

Подключитесь к Exchange Online с помощью кода ниже или этого скрипта подключения на моей галерее Microsoft Technet.

$cred = get-credential $ExchSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $cred -Authentication Basic -AllowRedirection Import-PSSession $ExchSession

Подключение к Центру безопасности и соответствия Office 365 с помощью удаленного PowerShell

Вы можете подключиться к Центру безопасности и соответствия с помощью следующей команды или этого скрипта.

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.compliance.protection.outlook.com/powershell-liveid/ -Credential $cred -Authentication Basic -AllowRedirection

Import-PSSession $Session

Получение списка всех ваших пользователей с почтовым ящиком

Итак, сначала мы начинаем с создания списка всех почтовых ящиков, которые мы хотим сохранить. С помощью Get-Recipient мы получаем все существующие объекты получателей в вашей организации. Чтобы сравнить списки, нам нужен только PrimarySmtpAddress. Используя команду select, мы можем ограничить результаты и выбрать только те поля, которые нам нужны.

Убедитесь, что вы отсортировали результаты, чтобы мы могли сравнить их позже.

$ExchUsers = Get-Recipient -ResultSize Unlimited -RecipientType UserMailbox | select PrimarySmtpAddress | sort-object PrimarySmtpAddress

Если вы используете SharePoint или OneDrive в своей организации, вы, вероятно, имеете некоторых внешних пользователей, перечисленных в Office 365. (Проверьте это в Центре администрирования Office 365 > Внешние пользователи). Вы хотите исключить этих пользователей из результатов. Мы можем сделать это на основе псевдонима и отфильтровать все результаты, которые не содержат маркер EXT: $_.Alias -notlike '#EXT#'.

У меня также был некоторый адрес .onmicrosoft.com, который не нужно было добавлять, исключите его с помощью $_.primarySmtpAddress -notlike '*.onmicrosoft.com'

С обоими этими конструкциями WHERE вы получаете следующую команду:

$ExchUsers = Get-Recipient -ResultSize Unlimited -RecipientType UserMailbox | where {( $_.Alias -notlike '#EXT#' ) -and ( $_.primarySmtpAddress -notlike '*.onmicrosoft.com' )} | select PrimarySmtpAddress | sort-object PrimarySmtpAddress

Получите все текущие почтовые ящики в политике хранения

Чтобы получить всех пользователей, которые в настоящее время находятся в политике удержания, сначала необходимо найти имя или GUID политики. Выполните следующую команду, чтобы получить политики с именами и GUID. GUID не является обязательным, но может быть проще использовать GUID, чем имя в скрипте.

Get-RetentionCompliancePolicy | select name,guid

Это вернет таблицу со всеми политиками сохранения в вашем арендаторе Office 365.

Get-RetentionCompliancePolicy -Identity <policy-name or guid> -DistributionDetail | Select -ExpandProperty ExchangeLocation

Чтобы получить все почтовые ящики, которым уже присвоена политика удержания, необходимо развернуть ExchangeLocation. Это даст нам список всех объектов с их именами, адресами электронной почты, типами ресурсов и т. д. Для сравнения списков мы собираемся отсортировать результаты по имени, которое на самом деле является адресом электронной почты:

$SecUsers = Get-RetentionCompliancePolicy -Identity <policy-name or guid> -DistributionDetail | Select -ExpandProperty ExchangeLocation | foreach {$_.Name} | sort-object $_.Name

Сравните обе и добавьте недостающие.

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

$notInSec = $exchUsers.primarySmtpAddress | Where {$secUsers -NotContains $_} foreach ($user in $notInSec){ Set-RetentionCompliancePolicy -Identity "<PolicyName>" -AddExchangeLocation $user }