Создание индивидуальных адресных книг в Office 365 и Exchange online
Один раз мне поставили задачу разграничить адресные книги пользователям Office 365.
Смысл был в том, что каждый пользователь должен видеть только адресную книгу своей компании, чужих пользователей и их адресные книги он видеть не должен.
В моем случае пользователи синхронизировались из локальной Active Directory в Office 365, поэтому было решено фильтровать пользователей по группам AD, и с помощью групп разграничивать адресные книги.
Далее скрипт как это сделать.Алгоритм скрипта:
1) Вводим название группы AD (группа должна быть создана)
2) Вводим название адресной книги (название латиницей)
3) Далее подключаемся к Office 365
4) Синхронизируем локальную AD с Office 365
5) Создаем AddressList ресурсов
6) Создаем AddressList получателей
7) Создаем GlobalAddressList
8) Создаем OfflineAddressBook
9) Создаем AddressBookPolicy
10)Применяем политику адресных книг на пользователей
Сам скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
#Set Variables $ADgroup = Read-Host "Введите имя группы AD по которой будет проходить фильтрация" $DisplayName = Read-Host "Введите отображаемое имя адресной книги" $AdminUsername = "LOGIN" $AdminPassword = "PASS" echo $ADgroup #Connect to Office 365 $SecurePassword = ConvertTo-SecureString $AdminPassword -AsPlainText -Force $cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $AdminUsername,$SecurePassword $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://ps.outlook.com/powershell" -Credential $cred -Authentication Basic -AllowRedirection Import-PSSession $Session Import-Module MSOnline Connect-MSOLService -Credential $cred #Sync Local AD with Office 365 Import-Module DirSync Start-OnlineCoexistenceSync #Waiting Sync echo "Ожидание синхронизации" #Create new Address List, GAL,Policy,Offline Book #set group DN $dn = (Get-DistributionGroup $ADgroup).distinguishedName #Create New Resourse address list New-AddressList -Name "$ADgroup.res" -RecipientFilter "RecipientDisplayType -eq 'ConferenceRoomMailbox' -and memberOfGroup -eq '$dn'" -DisplayName "$DisplayName Ресурсы" #Create New Address List New-AddressList -Name "$ADgroup" -RecipientFilter "RecipientType -eq 'UserMailbox' -or RecipientType -eq 'MailUniversalDistributionGroup' -and memberOfGroup -eq '$dn'" -DisplayName "$DisplayName" #Create New GAL New-GlobalAddressList -Name "$ADgroup.gal" -RecipientFilter "MemberOfGroup -eq '$dn'" #Create Offline Address Book New-OfflineAddressBook -Name "$ADgroup.Oab" -AddressLists "$ADgroup.gal" #Create Address Book Policy New-AddressBookPolicy -Name "$ADgroup.Abp" -AddressLists "$ADgroup" -OfflineAddressBook "\$ADgroup.Oab" -GlobalAddressList "\$ADgroup.gal" -RoomList "\$ADgroup.res" #Set Username Variable $username=[Environment]::UserName #Delete Temp file Remove-Item C:\Users\$username\TEMP #Get Object ID from AD cloud group Get-MsolGroup | Where-Object {$_.DisplayName -eq "$ADgroup"} | select ObjectId | Out-File -FilePath C:\Users\$username\TEMP $ObjectID=(Get-Content C:\Users\$username\TEMP)[3] echo $ObjectID #Select New Address Book Policy to users in AD Group Get-Mailbox -ResultSize unlimited | Where-Object {$_.ExternalDirectoryObjectId -in (Get-MsolGroupMember -GroupObjectId $ObjectID).objectid} | Set-Mailbox -AddressBookPolicy "$ADgroup.Abp" |
Добавить комментарий