Office 365: Exercices PowerShell

Suite à l’article sur le PowerShell, nous allons voir différents exercices de mise en application.

Création d’utilisateurs avec un csv, de groupes, affecter des licences, supprimer un utilisateur …


Récupération du template .csv de Microsoft

La première chose est de récupérer le template fourni par Microsoft dans O365.

Aller dans Office 365 Admin Center, puis dans Active Users, puis cliquer sur Import multiple users

Vous pouvez voir les 2 propositions de Microsoft pour les exemples

Je vais prendre le premier fichier comme base.
Puis je vais modifier les entêtes de sort qu’il n’y ai plus d’espace dans les entêtes et compléter avec mes éléments.

Je vous donne mon fichier mis en place: Import_User_AcTechDemo


Connexion au tenant O365

Je reprends donc la connexion depuis l’article précédent.
[cc lang= »powershell »]#Import du module de connection à 0365
Import-module msonline
$cred = Get-Credential
#se connecter au tenant O365
Connect-MsolService -Credential $cred[/cc]


Import de 15 utilisateurs

Voici le code PowerShell pour importer les utilisateurs.
[cc lang= »powershell »]$date = (Get-Date).ToString(‘yyyy-MM-dd_hh-mm’)
#Import du fichier .csv avec export des résultats vers un autre fichier .csv
#Aucun mot de passe n’a été spécifié, de sorte que les mots de passe aléatoires qui ont été générés sont visibles dans le fichier de sortie
Import-Csv -Path C:\PowerShell\Import_User_AcTechDemo.csv | foreach {New-MsolUser -UserPrincipalName $_.UserPrincipalName -FirstName $_.FirstName -LastName $_.LastName -DisplayName $_.DisplayName -Title $_.JobTitle -Department $_.Department -Office $_OfficeNumber -PhoneNumber $_.OfficePhone -MobilePhone $_.MobilePhone -StreetAddress $_.Address -City $_.City -State $_.State -PostalCode $_.ZIP -Country $_.Country -UsageLocation « FR » } | Export-Csv -Path C:\PowerShell\Export_$date.csv[/cc]
Vérifier votre import avec la commande: [cc lang= »powershell »]Get-MsolUser | Sort-Object -property DisplayName[/cc]

Vous pouvez également vérifier tous les paramètres importés pour un utilisateur avec:
[cc lang= »powershell »]Get-MsolUser -UserPrincipalName user06@acsoyez.fr | Select-Object UserPrincipalName,FirstName,LastName,DisplayName,Title,Department,Office,PhoneNumber,MobilePhone,StreetAddress,City,State,PostalCode,Country,UsageLocation[/cc]

Donc mon user a été importé avec les bonnes données.

Allons maintenant voir ce qu’à donner le .csv exporté, dans la première colonne il affiche les mots de passe:


Vérification et affectation des licences

[cc lang= »powershell »]Get-MsolAccountSku[/cc]

Maintenant on va affecter 5 de nos licences à des utilisateurs
[cc lang= »powershell »]#liste des utilisateurs qui doivent recevoir une licence
$UserList = « user01@acsoyez.fr », »user02@acsoyez.fr », »user03@acsoyez.fr », »user04@acsoyez.fr », »user05@acsoyez.fr »
#affectation des licences
Foreach ($user in $UserList)
{
Set-MsolUserLicense -UserPrincipalName $user -AddLicenses « actechdemo:ENTERPRISEPACK »
}[/cc]

On rééxécute la vérification
[cc lang= »powershell »]Get-MsolUser | Sort-Object -property DisplayName[/cc]
Et on voit bien que les utilisateurs sont maintenant avec licence.


Affectation partielle de licences

Maintenant je souhaite affecter seulement le service Exchange à 5 de mes utilisateurs.

Vérifions d’abord les services des licences que j’ai dans mon tenant.
[cc lang= »powershell »]#Vérification des licences
$ServicePlans = Get-MsolAccountSku | Where {$_.SkuPartNumber -eq « ENTERPRISEPACK »}
$ServicePlans.ServiceStatus[/cc]

On va donc créer un définition de licence uniquement avec Exchange

[cc lang= »powershell »]#Création d’une définition Exchange seulement
$ExchangeOnlineSku = New-MsolLicenseOptions -AccountSkuId actechdemo:ENTERPRISEPACK -DisabledPlans SWAY,INTUNE_O365,YAMMER_ENTERPRISE,RMS_S_ENTERPRISE,OFFICESUBSCRIPTION,MCOSTANDARD,SHAREPOINTWAC,SHAREPOINTENTERPRISE[/cc]

Puis l’affecter à 5 utilisateurs:
[cc lang= »powershell »]#affectation de cette définition
$UserExchange = « user06@acsoyez.fr », »user07@acsoyez.fr », »user08@acsoyez.fr », »user09@acsoyez.fr », »user10@acsoyez.fr »
Foreach ($user in $UserExchange)
{
Set-MsolUserLicense -UserPrincipalName $user -AddLicenses actechdemo:ENTERPRISEPACK -LicenseOptions $ExchangeOnlineSku
}[/cc]

On va faire la même chose pour une définition uniquement pack office et l’affecter à 5 autres utilisateurs.
[cc lang= »powershell »]#Création d’une définition Office seulement
$OfficeOnlySku = New-MsolLicenseOptions -AccountSkuId actechdemo:ENTERPRISEPACK -DisabledPlans SWAY,INTUNE_O365,YAMMER_ENTERPRISE,RMS_S_ENTERPRISE,MCOSTANDARD,SHAREPOINTWAC,SHAREPOINTENTERPRISE,EXCHANGE_S_ENTERPRISE
#affectation de cette définition
$UserOffice = « user11@acsoyez.fr », »user12@acsoyez.fr », »user13@acsoyez.fr », »user14@acsoyez.fr », »user15@acsoyez.fr »
Foreach ($user in $UserExchange)
{
Set-MsolUserLicense -UserPrincipalName « user07@acsoyez.fr » -AddLicenses actechdemo:ENTERPRISEPACK -LicenseOptions $OfficeOnlySku
}[/cc]


Création de groupes

Dans un premier temps, j’ai créé un groupe de distribution avec la console d’admin web.

Puis j’ai exécuté cette commande PowerShell pour vérifier le groupe que je venais de créer: Get-MsolGroup

Maintenant allons créé notre groupe avec PowrShell:
[cc lang= »powershell »]New-MsolGroup -DisplayName « Grp-Projet1 » -Description « Grp1 créer avec PowerShell »[/cc]

Et là on s’aperçoit que par défaut, PowerShell crée un groupe de sécurité et non pas une liste de distribution.


Création d’une liste de distribution

Pour effectuer cette action, il va falloir non plus se connecter au tenant 0365 mais à l’Exchange Online de ce tenant.

[cc lang= »powershell »]$365Logon = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $365Logon -Authentication Basic -AllowRedirection
Import-PSSession $Session[/cc]

Création du groupe de distribution
[cc lang= »powershell »]New-DistributionGroup -Name « Grp-PW1 » -DisplayName « Grp-PW1@acsoyez.fr » -Alias Grp-PW1 -Notes « création groupe1 avec PowerShell »[/cc]

Vérification des groupes du tenant
[cc lang= »powershell »]Get-MsolGroup[/cc]

Allons voir dans la console Admin Center, on s’apperçoie que le groupe a été créer avec l’adresse .onmicrosoft.com …

On va donc supprimer le groupe
[cc lang= »powershell »]Remove-DistributionGroup -Identity « Grp-PW1″[/cc]
Et le recréer avec la bonne adresse mail
[cc lang= »powershell »]New-DistributionGroup -Name « Grp-PW1 » -DisplayName « Grp-PW1 » -Alias Grp-PW1 -PrimarySmtpAddress « Grp-PW1@acsoyez.fr »[/cc]

Voilà qui est mieux:


Ajout des utilisateurs aux groupes

Alors maintenant on va ajouter des users dans les groupes que l’on a créé.[cc lang= »powershell »]$ListeGr1 = « user01@acsoyez.fr », »user02@acsoyez.fr », »user03@acsoyez.fr », »user04@acsoyez.fr », »user05@acsoyez.fr »
Foreach ($Usergr1 in $ListeGr1)
{
Add-DistributionGroupMember -Identity « Grp-PW1@acsoyez.fr » -Member $Usergr1
}[/cc]

Vérification des membres du groupe Grp-PW1
[cc lang= »powershell »]Get-DistributionGroupMember -Identity « Grp-PW1@acsoyez.fr »[/cc]


Suppression d’utilisateurs

Code PowerShell pour Supprimer un utilisateur

[cc lang= »powershell »]#Supression d’un utilisateur
Remove-MsolUser -UserPrincipalName « user01@acsoyez.fr »[/cc]

Lors de l’exécution de la commande, un message apparait:

Vérifions encore une fois notre liste d’utilisateur, le user01 n’est plus dans la liste
[cc lang= »powershell »]Get-MsolGroup | Sort-Object -property DisplayName[/cc]

Vérifier la liste à laquelle ce user appartenait, le user01 n’y appartient plus
[cc lang= »powershell »]Get-DistributionGroupMember -Identity « Grp-PW1@acsoyez.fr » | Sort-Object -property DisplayName[/cc]

Si l’utilisateur essaye maintenant de se connecter, on lui indique que ces identifiants sont incorrects.


Suppression de l’utilisateur de la corbeille

ATTENTION: cette manipulation est irréversible

Pour l’exemple, je vais supprimer l’utilisateur user08
[cc lang= »powershell »]Remove-MsolUser -UserPrincipalName « user08@acsoyez.fr »[/cc]

Vérification que l’utilisateur est bien dans la corbeille
[cc lang= »powershell »]Get-MsolUser -All -ReturnDeletedUsers | Sort-Object -property DisplayName[/cc]

On supprime user08 de la corbeille et on revérifie la corbeille
[cc lang= »powershell »]Remove-MsolUser -UserPrincipalName « user08@acsoyez.fr » -RemoveFromRecycleBin[/cc]

On va tenter de restaurer l’utilisateur
[cc lang= »powershell »]Restore-MsolUser -UserPrincipalName « user08@acsoyez.fr »[/cc]
Et là on a bien une erreur comme quoi l’utilisateur n’existe pas


Restauration de l’utilisateur

Pour voir la liste des users suprimés
[cc lang= »powershell »]Get-MsolUser -All -ReturnDeletedUsers[/cc]

On va maintenant restaurer le user01
[cc lang= »powershell »]Restore-MsolUser -UserPrincipalName « user01@acsoyez.fr »[/cc]

Vérifions si l’appartenance au groupe a été restauré en même temps
[cc lang= »powershell »]Get-DistributionGroupMember -Identity « Grp-PW1@acsoyez.fr »[/cc]
Et effectivement c’est bien le cas!


Liste des domaines disponibles

Petite commande pour voir la liste des domains disponible sur votre tenant O365.
[cc lang= »powershell »]Get-MSolDomain[/cc]


A vous de jouer !

2 réflexions sur « Office 365: Exercices PowerShell »

Les commentaires sont fermés.