Les 6 principales commandes PowerShell pour gérer Office 365
Si vous ne connaissez pas PowerShell, vous devriez vraiment envisager d’en apprendre les bases. Cela vous aidera dans vos tâches quotidiennes en tant qu’administrateur d’Office 365.
Dans ce cadre, je vais vous expliquer un peu plus les bases de PowerShell et comment vous pouvez vous y mettre dès aujourd’hui.
Les bases de PowerShell
Le grand avantage de PowerShell est qu’il n’est pas difficile de comprendre les concepts clés réutilisables à l’infini.
A l’époque des scripts en ligne de commande, nous avions de bonnes raisons de craindre la ligne de commande. Dans ces environnements, il n’existe tout simplement pas de norme commune sur la façon de faire les choses.
Il se peut qu’une commande prenne les paramètres d’une certaine manière et qu’une autre les prenne d’une manière complètement différente. Dans certains cas, les outils de ligne de commande présentent leur propre environnement (comme netsh ou ntdsutil). Comprendre comment obtenir de l’aide sur la commande elle-même peut être très complexe. Et dans le cas des scripts VBS, vous seriez dans l’ouest sauvage. Certains scripts peuvent imposer des paramètres, d’autres peuvent même demander l’intervention de l’utilisateur lorsque vous les exécutez. Tandis que d’autres peuvent ne pas utiliser de paramètres du tout.
Concept
PowerShell, en revanche, fonctionne de manière très différente. Une fois que vous avez compris comment fonctionnent les commandes PowerShell, vous pouvez réutiliser ces connaissances.
Le fonctionnement des cmdlets PowerShell repose essentiellement sur une paire Verbe-Nom :
- Le composant verbal est la partie du nom qui définit l’action de la commande.
- La composante nominale est la partie du nom qui définit ce sur quoi l’action sera exécutée.
Par exemple, la plupart des modules de PowerShell ont des cmdlets Get- qui récupèrent des informations sur des composants comme les boîtes aux lettres. Ils disposent également de verbes correspondant à la création, la mise à jour ou la suppression de composants. Cela signifie que vous pouvez créer une New-Mailbox, la mettre à jour avec des informations supplémentaires en utilisant Set-Mailbox. Puis obtenir une liste de toutes vos boîtes aux lettres avec Get-Mailbox.
Les entrées dans PowerShell sont tout aussi cohérentes. Les cmdlets PowerShell peuvent accepter des paramètres. Ceux-ci sont ajoutés après la cmdlet, dans l’ordre de votre choix. Et ils peuvent être découverts facilement à l’aide de l’autocomplétion basée sur les onglets. Un paramètre se présente sous la forme -Paramètre suivi des données que vous souhaitez fournir. Par exemple, si vous souhaitez récupérer des informations sur une boîte aux lettres, vous utiliserez Get-Mailbox -Identity steve@practical365.com.
Interpréter les résultats
Les résultats de PowerShell sont un peu plus complexes à comprendre. Mais vous n’avez pas besoin de tout savoir sur son fonctionnement pour exécuter des cmdlets. PowerShell étant orienté objet, la sortie d’une cmdlet n’est pas purement textuelle. Il s’agit plutôt d’un objet – qui peut être une liste d’objets. Chacun d’entre eux contenant des attributs avec des informations sur chaque objet. Ainsi, PowerShell peut afficher une liste de boîtes sous forme de tableau avec seulement les informations importantes. Cependant, l’objet contient toutes les informations que la cmdlet a fournies en sortie. L’exécution de Get-Mailbox, par exemple, contiendra toutes les informations sur les boîtes aux lettres. Ces information seront visible si vous examinez la boîte aux lettres à l’aide de l’Exchange Admin Center et plus encore.
Enfin, vous devez savoir comment vous connecter à Office 365 si vous voulez pouvoir le gérer. Vous trouverez tout ce que vous devez savoir dans notre tutoriel Portails d’administration d’Office 365 et connexions PowerShell. Personnellement, j’utilise le script Connect to Office 365 sur mes postes de travail pour me connecter facilement à chaque service.
Les cmdlets utiles que vous devez connaître
Maintenant, il est utile de connaître quelques cmdlets et combinaisons de commandes courantes que vous pouvez utiliser. Sans ordre particulier, en voici six que j’utilise presque quotidiennement.
Select-Object
Lorsque vous utilisez des cmdlets comme Get-Mailbox, vous obtenez un résultat filtré et formaté préétabli. Parfois, cependant, vous souhaitez simplement obtenir des informations spécifiques. Notamment si vous souhaitez les exporter vers un fichier CSV pour un examen plus approfondi.
Select-Object est parfait pour cela. Utilisez le symbole pipe | après la cmdlet que vous avez exécutée pour transmettre l’objet de sortie à Select-Object. Saisissez ensuite les noms des attributs, suivis de virgules pour ne sélectionner que ces attributs :
Get-Mailbox | Select-Object DisplayName, PrimarySMTPAddressGet-MailboxStatistics | Select-Object DisplayName,TotalItemSize
En cas de doute, utilisez simplement Select * pour sélectionner tous les attributs avant de réduire.
Where-Object
Lorsque vous utilisez un cmdlet comme Get-Mailbox sans aucun paramètre, vous recevez une liste complète de tous les objets. Avec Get-Mailbox, il peut s’agir de toutes les boîtes aux lettres. Vous voudrez peut-être filtrer cette liste en fonction de la façon dont un attribut est défini. Par exemple, vous pouvez rechercher toutes les boîtes aux lettres qui sont masquées dans le carnet d’adresses. Vous pouvez utiliser Where-Object pour y parvenir.
Dans la cmdlet Where-Object, chaque ligne de l’objet de sortie est évaluée en fonction de la condition définie. Vous pouvez utiliser des opérateurs de comparaison comme -eq ou -like pour évaluer si un attribut correspond, est similaire, ne correspond pas, est inférieur ou supérieur à. Comme nous l’avons fait avec Select-Object, nous pouvons spécifier les attributs à vérifier. Cependant, dans le cmdlet Where-Object, nous préfixons le nom de l’attribut avec les caractères spéciaux $_. comme indiqué ci-dessous :
Get-Mailbox | Where-Object {$_.HiddenFromAddressBook –eq $False}
Get-MsolDomain | Where-Object {$_.Authentication -eq "Federated"}
Foreach-Object
La boucle foreach vous permet d’accéder à chaque ligne de l’objet de sortie. Et elle exécute le même ensemble de commandes sur chaque ligne. Il s’agit d’une technique très simple et fondamentale pour tous les scripts, sauf les plus simples :
Foreach-Object ($mailbox in (Get-Mailbox))
{
Get-MsolUser –UserPrincipalName $mailbox.userprincipalname
}
Start-Transcript.
Est-ce la commande que j’ai exécutée la semaine dernière ? Avec Start-Transcript, vous pourrez vérifier ce que vous avez fait et peut-être remarquer l’erreur que vous avez commise.
Start-Transcript lance la transcription d’un fichier texte enregistrant toutes les cmdlets (et la sortie texte) de votre session PowerShell. Vous n’avez même pas besoin de réfléchir au nom du fichier. Si vous utilisez simplement la cmdlet sans aucun paramètre, elle créera un nouveau fichier dans votre dossier Documents avec le nom de la machine et l’horodatage. Lorsque vous avez fini d’apporter des modifications, utilisez Stop-Transcript pour mettre fin à la journalisation :
Start-Transcript
# Do the thing that you were planning to do…
Stop-Transcript
# Next week, check the logs when you are asked to show them what you did
Export-CliXML.
Notre avant-dernière cmdlet est l’un des outils les plus utiles si vous travaillez avec Office 365. Il s’agit d’Export-CliXML et de sa cmdlet sœur Import-CliXML.
Cette paire de cmdlets nous permet de capturer la sortie complète dans un fichier XML – une capture ponctuelle de l’état d’Office 365.
Dans notre exemple ci-dessous, nous pouvons utiliser la cmdlet Get-Mailbox pour exporter tout ce que la cmdlet retournerait dans le fichier Mailboxes.XML. Si nous utilisons ensuite, à une date ultérieure, Import-CliXML pour importer le fichier Mailboxes.XML, nous pouvons alors le traiter comme si nous exécutions Get-Mailbox encore et encore. J’utiliserai cet ensemble de cmdlets au quotidien pour capturer des informations à partir d’un tenant Office 365. Et ainsi exécuter des scripts sur ces données sans avoir besoin d’accéder au tenant lui-même.
Get-MsolUser -All | Export-Clixml .\MsolUser.XML
Get-Mailbox –ResultSize Unlimited | Export-CliXML .\Mailboxes.XML
# Copy it somewhere else
Import-CliXML .\Mailboxes.XML
Get-Help.
Enfin, il y a la cmdlet la plus utile de votre boîte à outils PowerShell, Get-Help. Si vous n’avez pas utilisé une cmdlet depuis un certain temps, Get-Help fournit des informations détaillées avec exemples. Dans l’exemple ci-dessous, vous verrez mon paramètre le plus utile pour Get-Help. Cela me rappellera non seulement quels sont les paramètres à utiliser, mais aussi quelles peuvent être les valeurs typiques. Detailed fournit plus d’informations sur la cmdlet, y compris des informations détaillées sur chaque paramètre. Tandis que -Online nous redirige vers la version Microsoft Docs de la documentation de la cmdlet.
Get-Help Get-MsolAdministrativeUnit –Examples
Get-Help Get-MsolAdministrativeUnit –Detailed
Get-Help Get-SPOTenant -Online
Que faire ensuite ?
Si vous n’utilisez pas PowerShell aujourd’hui, consultez notre section dédiée à PowerShell pour en savoir un peu plus.
Si vous voulez commencer à utiliser ces exemples, pensez à faire ce qui suit…
- Utilisez Start-Transcript et Export-CliXML pour conserver une copie de l’état des choses avant et après et un journal de ce que vous avez fait.
- Choisissez quelques commandes Get- qui vous semblent utiles et utilisez Get-Help pour en savoir plus sur elles. Vous n’en trouvez aucune ? Essayez Get-Command
- Utilisez Select-Object en combinaison avec Export-CSV ou Out-gridview pour vous permettre de fournir facilement des rapports à partir des commandes ou de les visualiser à l’écran.
- Utilisez Where-Object et Foreach-Object pour automatiser votre première tâche !
Adaptez vos scripts Exchange Online pour utiliser Get-ExoMailbox