PoshCode Archive  Artifact [e9019fd07a]

Artifact e9019fd07a5b6f7d44a59fc5c3a766e8f7915f22ae8cb1ef43bbe00438b5a6db:

  • File Office-365-wasted-Lics.ps1 — part of check-in [0ca6474e6d] at 2018-06-10 13:33:23 on branch trunk — This Script will create a csv file with all the users that are disabled in AD but still have licenses in Office 365, it will then email the script out and perform a clean up. (user: AdrianWoodrup size: 2555)

# encoding: ascii
# api: powershell
# title: Office 365 wasted Lics
# description: This Script will create a csv file with all the users that are disabled in AD but still have licenses in Office 365, it will then email the script out and perform a clean up.
# version: 0.1
# type: module
# author: AdrianWoodrup
# license: CC0
# x-poshcode-id: 3940
# x-archived: 2015-04-14T07:30:56
# x-published: 2015-02-12T14:40:00
#
#
$AD = 'C:\temp\ad.csv'
$o365 = 'C:\temp\o365.csv'
$duplicates = 'C:\temp\Duplicate Office 365 users.csv'
$log = 'C:\temp\Duplicate Office 365 users.log'
$PSEmailServer = 'MAILSERVER'
$EmailTo = 'TO-EMAILADDRESS'
$EmailFrom = 'FROM-EMAILADDRESS'

Import-Module ActiveDirectory 
Import-Module MSOnline

$password = ConvertTo-SecureString 'PASSWORD' -AsPlainText -Force
$LiveCred = New-Object System.Management.Automation.PSCredential ("O365-USERNAME", $password)
New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection

Connect-MsolService -Credential $Livecred

Search-ADAccount -AccountDisabled | Select-Object UserPrincipalName | where-object {$_.UserPrincipalName -like "*@*" }  | Export-Csv $AD
Get-MsolUser -all | Where-Object { $_.isLicensed -eq "TRUE"} | Select-Object UserPrincipalName | Export-Csv $o365
$Import = Import-Csv $o365
$Import | Out-File -Append $AD -encoding ASCII

$content = Get-Content $AD
$content | Foreach {$_.TrimEnd()} | Set-Content $AD

$RMVQuotes = Get-Content $AD 
$RMVQuotes -replace('"','') | Sort-Object | Out-File $AD -Force
Get-Content $AD | Group-Object -NoElement | Where-Object {$_.Count -gt 1} | Select-Object Count, Name | Export-Csv $duplicates

get-pssession | where-object {$_.ComputerName -Like "*.outlook.com"} | remove-pssession

copy-item $duplicates $log

$DupLic = Import-Csv $duplicates | Measure-Object | Select-Object -Expand count
$subject = "There are " + $DupLic + " office 365 Licenses being used by disabled users"
if ($DupLic -gt 3){
	Send-MailMessage -To $EmailTo -From $EamilFrom -Subject $Subject -attachments $log -Body "There are O365 Licenses being used by disabled users. Please remove theses licenses from Office 365 as each one costs. The attached is a list of all users that have an office 365 license assigned to them but are disabled in AD. Confirm the account and email is not in use and the license can be deleted. "
}

Remove-Item $AD
Remove-Item $o365
Remove-Item $Duplicates
Remove-Item $Log