PowerShell: modificare la licenza Office 365 ed escludere Teams

| |

PowerShell Logo Gioxx.org

Non di solo Teams è fatto il mondo dei meeting e, con buona pace dei complottisti, qui si è sostenitori (nonché massicci utilizzatori) di Zoom dalla prima ora, ben prima che scoppiasse la pandemia e facesse il botto vero e proprio andando di diritto sotto le luci della ribalta (lo usiamo in azienda come client predefinito per meeting e telefonate). Per questo motivo, pur essendo clienti Microsoft Office 365, dalle nostre licenze escludiamo l’utilizzo di Teams (all’epoca Skype for Business).

Se per le licenze di tipo “E” (E1/E3, ecc.) avevo già previsto l’eliminazione dell’accesso a SfB / Teams secoli orsono, per le P1 (quelle basiche) non avevo fatto alcunché perché inizialmente non previsto all’interno del ventaglio dei servizi offerti. Ho quindi rimediato qualche tempo fa con uno script di PowerShell che facesse il lavoro sporco al posto mio. Si lancia una ricerca a tappeto degli utenti che hanno la licenza di tipo “EXCHANGESTANDARD” e poi gli si toglie dal bouquet “TEAMS1“.

Ti mostro lo script e dopo ti spiego meglio cosa va a fare:

# GSolone 26/2/20, disabilito Teams a chi possiede licenza P1

#Verifica parametri da prompt
Param( 
    [Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)] 
    [string] $Company 
)

""; Write-Host "Elenco servizi legati a licenza P1" -f "yellow"
Get-MsolAccountSku | Where-Object {$_.SkuPartNumber -eq "EXCHANGESTANDARD"} | ForEach-Object {$_.ServiceStatus} | out-string

Write-Host "Elenco utenze registrate con licenza P1" -f "yellow"

$command = '$O365E3Licences = New-MsolLicenseOptions -AccountSkuId ' + $Company + ':EXCHANGESTANDARD -DisabledPlans TEAMS1'
#Write-Host "Debug: $($command)"
iex $command

Get-MsolUser -all | where {$_.UserPrincipalName -like "*contoso.com" -and $_.isLicensed -eq "True" -and $_.licenses[0].accountskuid.tostring() -eq "$($Company):EXCHANGESTANDARD"} | ft UserPrincipalName, DisplayName, isLicensed -AutoSize | out-string

Write-Host "Disabilito Skype for Business sulle licenze E3 ... " -f "yellow" -nonewline
Get-MsolUser -all |  where {$_.UserPrincipalName -like "*contoso.com" -and $_.isLicensed -eq "True" -and $_.licenses[0].accountskuid.tostring() -eq "$($Company):EXCHANGESTANDARD"} | Set-MsolUserLicense -LicenseOptions $O365E3Licences
Write-Host " fatto" -f "green" -nonewline; Write-Host "."
""; "";
Write-Host "Avvio il browser per verificare se gli utenti compaiono in console ..."
Start-Process -FilePath "https://admin0e.online.lync.com/LSCP/Users.aspx"
""

Per rendere generico lo script devo chiedere in input la “Company“, ovvero il nome dato al tenant quando si sottoscrive un abbonamento Microsoft Office 365. Per capirci, quello che sta prima del dominio onmicrosoft.com che viene utilizzato come default per ogni utenza di Office 365 (sono certo che ognuno conosce il proprio). Prendendo a esempio l’intramontabile “Contoso“, il piano di base P1 corrisponderà alla licenza contoso:EXCHANGESTANDARD nel tenant. Per capire che servizi fanno parte della licenza, chiedo di visualizzare l’elenco di ciò che l’utente ha a disposizione (Get-MsolAccountSku | Where-Object {$_.SkuPartNumber -eq "EXCHANGESTANDARD"} | ForEach-Object {$_.ServiceStatus} | out-string), ottenendo un risultato simile a questo:

ServicePlan         ProvisioningStatus
-----------         ------------------
BPOS_S_TODO_1       Success
INTUNE_O365         Success
EXCHANGE_S_STANDARD Success
TEAMS1              Success

A questo punto preparo una “nuova licenza” (intesa come il bouquet di servizi ai quali permettere l’accesso) e disabilito solo TEAMS1. Lancio quindi una ricerca a tappeto di tutti gli utenti che hanno licenza P1 e una casella di posta contoso.com, li mostro e successivamente gli applico sopra la nuova licenza creata (si può ritoccare lo script in qualsiasi momento e togliere di mezzo il filtro sul dominio, o magari inserirne di diversi, quella sopra è solo una proposta basata sulla mia esigenza).

Al termine dell’operazione faccio aprire il browser puntandolo all’indirizzo admin0e.online.lync.com/LSCP/Users.aspx, la vecchia console Skype for Business che presto verrà definitivamente eliminata ma che ancora oggi permette di dare un’occhiata agli utenti abilitati all’accesso SfB/Teams, utile solo per capire se l’operazione ha dato i suoi frutti.

In caso di dubbi, domande o suggerimenti per miglioramenti – come al solito – sai bene che l’area commenti è a tua totale disposizione (anche perché lo script poco sopra non è certamente la cosa più elegante e pulita del mondo, l’importante è che funzioni senza fare troppe domande).

#StaySafe


Immagine di copertina Dimitri Karastelev on Unsplash
Riconoscimenti:
community.spiceworks.com/topic/1774875-disable-skype-for-business-license-for-entire-company
verboon.info/2015/12/powershell-script-to-remove-office-365-service-plans-from-a-user
web.archive.org/web/20200924214945/https://gallery.technet.microsoft.com/PowerShell-Script-to-7d0920ad
Gioxx's Wall

Se hai correzioni o suggerimenti puoi lasciare un commento nell'apposita area qui di seguito o contattarmi privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! Satispay / PayPal / Buy Me A Coffee / Patreon

Condividi l'articolo con i tuoi contatti: