Автоматизация создания адресных книг в Office 365 через Powershell Часть 2

Дата: 31.12.2014 Автор Admin

В данной статье мы рассмотрим как удалять неактуальные адресные книги в 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.

Не забывайте в скриптах указывать свои пути и переменные, иначе ничего не заработает!

 

 


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *