Reporte de Office 365 para liberar licencias en desuso
Hola a todos!
Mostraré un script para liberar las licencias en desuso del Office 365. Este mostrará los usuarios que no envíen correo desde hace 30 días. Para esto primero te invito a conectarte al powershell del Office 365. Sino sabes como, entra al siguiente link:
Una vez conectado al powershell de Office 365 se procede a ejecutar el el siguiente script:
Para esto se necesita cambiar el NOMBRE_DE_REPORTE
###REPORT SEND | |
$dateEnd = get-date | |
$dateStart = $dateEnd.AddHours(-720) | |
$start=get-date | |
Write-Host "INICIA: $start" | |
Get-mailbox -id * | Where-Object {(Get-MsolUser -UserPrincipalName $_.UserPrincipalName | select -ExpandProperty IsLicensed -ErrorAction SilentlyContinue ) -eq "true"} | ForEach-Object { | |
#LOGON TIME | |
$lgMail=$null | |
$lgAD=$null | |
#FLAG LOGON TIME | |
$lgMailF=$null | |
$lgADF=$null | |
$Warn=$null | |
$tokenRefresh=$null | |
$tokenRefresh=$_.StsRefreshTokensValidFrom | |
$email=$_.WindowsEmailAddress | |
$create=$_.WhenCreated | |
$country=$_.UsageLocation | |
$Sent="BAD" | |
#LICENSE | |
$license=Get-MsolUser -UserPrincipalName $_.UserPrincipalName | select -ExpandProperty Licenses | select -ExpandProperty AccountSkuId; | |
$key="null" | |
if($license -like '*ENTERPRISEWITHSCAL*'){$key="E4"} | |
if($license -like '*ENTERPRISEPACK*'){$key="E3"} | |
if($license -like '*STANDARDPACK*'){$key="E1"} | |
if ($create -le $dateStart){ | |
#GET LAST MESSAGE | |
$flagSendMsg = Get-MessageTrace -StartDate $dateStart -EndDate $dateEnd -SenderAddress $email | Select-Object Received, SenderAddress, RecipientAddress, Subject, Status, ToIP, FromIP, Size, MessageID, MessageTraceID | Select-Object -Last 1 -ExpandProperty Received | |
if ($flagSendMsg -ge $dateStart){ | |
$Sent="GOOD" | |
#Write-Host $Sent | |
}else{ | |
#Write-Host $Sent | |
#SHOW RESULT | |
get-mailboxstatistics -id $_.UserPrincipalName | select DisplayName, LastLogonTime,@{Name="SentMail"; Expression={$Sent}}, @{Name="email"; Expression={$email}},@{Name="created"; Expression={$create}},@{Name="country"; Expression={$country}},@{Name="license"; Expression={$key}} | |
#LOGGING | |
$timing=get-date | |
Write-Host "USUARIO: $email HORA: $timing ESTADO: $Sent" | |
} | |
} | |
} | Export-Csv c:reportsReportSend24.csv -Encoding UTF8 | |
$end=get-date | |
Write-Host "TERMINA: $end" |
Hasta pronto!