L’importance des variables typées dans l’utilisation des cmdlets PowerShell de Microsoft 365

Share on facebook
Share on twitter
Share on linkedin

 

 

S’attaquer aux éléments renvoyés par les cmdlets

 

Je trouve que l’écriture d’un script PowerShell est une activité paisible. Elle concentre l’esprit sur une activité lucrative. Jusqu’à ce que quelque chose se passe mal, c’est-à-dire. Prenons l’exemple du script visant à créer un rapport sur les gestionnaires et leurs rapports directs dans un locataire. Simple, ai-je pensé. Cela ne devrait pas prendre plus d’une heure, même pour le rendre joli. Puis je me suis perdue en examinant pourquoi le nombre de rapports directs d’un manager apparaissait comme un blanc, même si je savais que le manager avait un rapport direct. C’est étonnant de voir à quel point l’esprit peut s’enfoncer dans le terrier du lapin si on le lui permet.

 

J’ai résolu le problème en tapant la variable utilisée pour accepter les données renvoyées par la cmdlet pour trouver le rapport direct d’un manager. Le problème est ensuite de comprendre pourquoi le problème existe et s’il est lié à une seule cmdlet ou à toutes les cmdlets. Il s’avère que la réponse est plus compliquée que je ne l’avais d’abord pensé.

Dans cet article,  les secrets des variables typées et savoir pourquoi cela est important lorsque les cmdlets renvoient des données.

 

Trouver des rapports directs

 

Prenez cet exemple. Nous avons les détails du compte Azure AD d’un manager stockés dans une variable.

 

Nous appelons maintenant le cmdlet Get-User pour trouver les rapports directs du manager. La sortie va dans une variable non typée appelée $R.

 

Apparemment, lorsque PowerShell renvoie un seul élément, il décompose l’élément et renvoie un objet au lieu d’un tableau. En utilisant la méthode GetType() pour examiner l’objet, vous verrez qu’il s’agit d’un System.

 

Forcer la variable à être un tableau signifie que PowerShell ne décompose pas l’élément unique pour devenir un objet. Comme la variable $R continue d’être un tableau, la propriété count est disponible. Selon la documentation de Microsoft, les tableaux avec un ou zéro élément ont des propriétés count à partir de PowerShell 3.0.

 

Exceptions avec Azure AD Cmdlets

 

Génial. Nous pensons comprendre ce qui se passe et cela semble être une excellente idée de taper les variables utilisées pour recevoir les retours d’un cmdlet. Cependant, si je répète l’opération pour renvoyer les mêmes données que celles trouvées avec Get-User ci-dessus en utilisant la cmdlet Get-AzureADUserDirectReport vers une variable non typée, PowerShell rapporte le compte correct !

 

À part le fait de générer un tableau au lieu d’un objet de répertoire, le fait de taper la variable de sortie comme un tableau n’a aucun effet sur les cmdlets Azure AD. Ils fonctionnent comme prévu.

 

Le typage, c’est du bon

 

Ce serait bien si tous les modules PowerShell utilisés a travers les apps Microsoft 365 étaient cohérents, mais comme le prouvent les cmdlets de gestion des modèles d’équipe inclus dans le module Microsoft Teams V2.0, ce n’est pas toujours le cas. Les tests devraient révéler des problèmes tels que les nombres impairs d’articles retournés, mais qui teste tout, surtout de nos jours ? Ce vieux chien a appris un nouveau tour et maintenant je tape toutes les variables utilisées pour les données retournées. Juste au cas où.