Scriptare l'operazione tramite PowerShell aiuta non poco.
Verificare le licenze disponibili nel Ns tenant [connessione + lista licenze]:
Connect-MsolService
Get-MsolAccountSku
Ora immaginiamo di filtrare utenti in base alla loro licenza assegnata:
Get-MsolUser -All | Where-Object {($_.licenses).AccountSkuId -match "EnterprisePremium"}
Passiamo allo script vero e proprio (fonte, thanks to Bradley Wyatt).
Rispetto all'originale ho aggiunto un tipo di licenza da rimuovere ($LicenseRemove2) e modificato l'ordine delle azioni, in quanto non potevo assegnare la nuova licenza (ENTERPRISEPREMIUM_STUUSEBNFT) senza prima aver rimosso l'altra (STANDARDWOFFPACK_STUDENT)[causa impossibilità di coesistenza tra i due piani SharePoint].
Da notare che la licenza da rimuovere è la licenza di "controllo" per filtrare gli account.
Il risultato finale è circa questo:
#VARIABILI
$LicenseAdd = "ENTERPRISEPREMIUM_STUUSEBNFT"
$LicenseRemove = "OFFICESUBSCRIPTION_STUDENT"
$LicenseRemove2 = "STANDARDWOFFPACK_STUDENT"
#Richiesta credenziali per l'accesso
$UserCredential = Get-Credential
Write-Host "Connessione a Office 365..." -ForegroundColor Yellow
Connect-MsolService -Credential $UserCredentiget-msolaccal
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
get-msolImport-PSSession $Session -AllowClobber
$Users = Get-MSOLUser -All | Where-Object { $_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -like "*$LicenseRemove*" }
Foreach ($User in $Users)
{
$UPN = ($User).UserPrincipalName
$DN = ($User).DisplayName
#Get License AccountSkuId
$License = (Get-MsolAccountSku | Where-Object { $_.AccountSkuId -like "*$LicenseAdd*" }).AccountSkuId
#Get License AccountSkuId
$RemoveLicense = (Get-MsolAccountSku | Where-Object { $_.AccountSkuId -like "*$LicenseRemove*" }).AccountSkuId
#Get License AccountSkuId 2
$RemoveLicense2 = (Get-MsolAccountSku | Where-Object { $_.AccountSkuId -like "*$LicenseRemove2*" }).AccountSkuId
#Rimuovo Office 365 A1 per studenti licenza utente
Write-Host "Removing Office 365 A1 per studenti license from $DN..." -ForegroundColor White
Set-MsolUserLicense -UserPrincipalName $UPN -RemoveLicenses $RemoveLicense2
#Rimuovo Microsoft 365 Apps per studenti licenza utente
Write-Host "Removing Microsoft 365 Apps per studenti license from $DN..." -ForegroundColor White
Set-MsolUserLicense -UserPrincipalName $UPN -RemoveLicenses $RemoveLicense
#Aggiungo Office 365 A5 students use benefit licenza utente
Write-Host "Adding Office 365 A5 students use benefit
license for $DN..." -ForegroundColor White
Set-MsolUserLicense -UserPrincipalName $UPN -AddLicenses $License
}
Get-PSSession | Remove-PSSession
---
Alla fine ho fatto anche un bel giro di disattivazione Yammer per tutti gli utenti, sempre con PowerShell, ma quello lo vediamo nella prossima puntata...
0 commenti:
Posta un commento