Автоматизация создания адресных книг в Office 365 через Powershell Часть 2
В данной статье мы рассмотрим как удалять неактуальные адресные книги в Office 365.
Алгоритм скрипта будет такой:
1) Подключаемся к Office 365
2) Синхронизируем локальную AD с Office 365
3) Выгружаем в CSV список групп Office 365 (выгружаем все группы кроме стандартных)
4) Отключаемся от Office 365
5) Импортируем CSV и проверяем существуют ли группы в локальной Active Directory
6) Создаем список групп которые не существуют в локальной Active Directory
7) Подключаемся к Office 365
8) Отключаем неактуальные политики адресных книг
9) Удаляем неактуальные политики адресных книг, адресные листы, GAL, Offline address book
Теперь сам скрипт:
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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
#Delete OLD Sessions Remove-PSSession $Session $AdminUsername = "LOGIN@test.com" $AdminPassword = "PASS" #Set Vars $CSVpatch = "C:\PowerShell_Scripts\TEMP_CSV.csv" $ADgroupTEMP = "C:\PowerShell_Scripts\TEMP_123.txt" #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 #Export Office 365 Groups to CSV Get-AddressList | Where-Object {$_.Name -ne "All Contacts" -and $_.Name -ne "All Distribution Lists" -and $_.Name -ne "All Rooms" -and $_.Name -ne "All Users" -and $_.Name -ne "All Groups" -and $_.Name -ne "Offline Global Address List" -and $_.Name -notlike "*.res*"} | select Name | export-csv -Encoding UTF8 -NoTypeInformation -Delimiter ";" $CSVpatch Remove-PSSession $Session Remove-Item $ADgroupTEMP Import-Csv $CSVpatch -Delimiter ";"| % { $ADgroup = $_.Name; # Set the Name $Group = Get-ADGroup -LDAPFilter "(sAMAccountName=$ADgroup)" If ($Group -eq $Null) { "Group does not exist in AD" $ADgroup >> $ADgroupTEMP } Else { "Group found in AD" } } $ADgroup=Get-Content C:\PowerShell_Scripts\TEMP_123.txt foreach($Group in $ADgroup){ #Delete OLD Sessions Remove-PSSession $Session #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 #Disable Address book policy from mailboxes (if enabled) Get-Mailbox -resultsize unlimited | where {$_.AddressBookPolicy -eq "$Group.Abp"} | Set-Mailbox -AddressBookPolicy $NULL #Remove Address Book Policy Remove-AddressBookPolicy "$Group.Abp" -confirm:$false #Remove Offline Address Book Remove-OfflineAddressBook "$Group.Oab" -confirm:$false #Remove GAL Remove-GlobalAddressList "$Group.gal" -confirm:$false #Remove address lists Remove-AddressList -Identity "$Group.res" -Recursive -confirm:$false Remove-AddressList -Identity "$Group" -Recursive -confirm:$false } remove-item $CSVpatch Remove-Item $ADgroupTEMP |
В следующей статье я расскажу как через скрипт powershell актуализировать адресные книги Office 365.
Не забывайте в скриптах указывать свои пути и переменные, иначе ничего не заработает!
Добавить комментарий