Автоматизация создания адресных книг в 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
Теперь сам скрипт:
#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.
Не забывайте в скриптах указывать свои пути и переменные, иначе ничего не заработает!
Добавить комментарий