Bonjour, nous allons voir les bases pour gérer ses licences O365 en powerShell
Connexion au tenant O365
Nous allons enregistrer les informations de connexion
$cred = Get-Credential
Puis nous allons nous connecter au tenant lié au informations de connexion enregistré précédemment.
Connect-MsolService -Credential $cred
Récupération des offres
Si vous n’avez pas d’erreur vous êtes connecté a votre tenant.
Nous allons récupérer les infos sur nos offres
Get-MsolAccountSku | Format-Table AccountSkuId
Nous allons ensuite listé les produits disponible dans l’offre que nous allons assigner.
$ServicePlans = Get-MsolAccountSku | Where {$_.SkuPartNumber -eq “ENTERPRISEPREMIUM_NOPSTNCONF”}
$ServicePlans.ServiceStatus
Voici les correspondances produits des valeurs de servicePlan pour un abonnement E5.
Création d’une offre personnalisée
En nous basant sur les valeurs servicesPlan, nous allons créer notre option de licence.
$MyO365Sku = New-MsolLicenseOptions -AccountSkuId piservices:ENTERPRISEPREMIUM_NOPSTNCONF -DisabledPlans LOCKBOX_ENTERPRISE,EXCHANGE_ANALYTICS,ATP_ENTERPRISE,MCOEV,INTUNE_O365,MCOSTANDARD,EXCHANGE_S_ENTERPRISE
Le paramètre –DisabledPlans permet des choisir les éléments que l’on souhaite désactiver dans l’offre.
Attribution de la licence
Pour des raison légal il faut spécifier le pays où a licence sera utilisé.
Set-MsolUser -UserPrincipalName adrien.gougeon@piservices.fr -UsageLocation FR
Enfin nous n’avons plus qu’a associer notre licence avec nos options.
Set-MsolUserLicense -UserPrincipalName adrien.gougeon@piservices.fr -AddLicenses piservices:ENTERPRISEPREMIUM_NOPSTNCONF -LicenseOptions $MyO365Sku
version script
Voici en bonus les commandes dans un script simple et fonctionnel.
$cred = Get-Credential
Connect-MsolService -Credential $cred
$MyO365Sku = New-MsolLicenseOptions -AccountSkuId piservices:ENTERPRISEPREMIUM_NOPSTNCONF -DisabledPlans LOCKBOX_ENTERPRISE,EXCHANGE_ANALYTICS,ATP_ENTERPRISE,MCOEV,INTUNE_O365,MCOSTANDARD,EXCHANGE_S_ENTERPRISE
$users=Get-MsolUser -Synchronized -UnlicensedUsersOnly | where {$_.UserPrincipalName -notlike 'adm_*' -and $_.UserPrincipalName -like '*@piservices.fr'} | select -Property UserPrincipalName
Foreach ($user in $users) {
Set-MsolUser -UserPrincipalName $user.UserPrincipalName -UsageLocation FR
Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -AddLicenses piservices:ENTERPRISEPREMIUM_NOPSTNCONF -LicenseOptions $MyO365Sku
}
Nous avons la commande :
Get-MsolUser -Synchronized -UnlicensedUsersOnly | where {$_.UserPrincipalName -notlike 'adm_*' -and $_.UserPrincipalName -like '*@piservices.fr'} | select -Property UserPrincipalName
Cette commande permet d’obtenir les utilisateurs qui sont synchronisés et sans licence. le résultat est ensuite filtré pour enlever les comptes admins et cibler le domaine que nous voulons manipuler et enfin nous ne prenons que le champ UserPrincipalName car c’est le seul qui nous sert pour le script.
Bonus
Voici en bonus des commandes utiles pour améliorer vos scripts.
Pour sélectionner toutes les entrée d’une OU sans les sous-OU et mettre une valeur dans extensionAttribute15.
Get-ADUser -Filter * -SearchBase "VOTRE OU" -SearchScope 1 -Properties extensionAttribute15 | Set-ADUser –Add @{extensionAttribute15="AzureAdSync"}
Cette commande peut vous être utile si vous faites de la synchro d’AD on-premise avec azure AD connect