Que sont les variables automatiques dans PowerShell

Que Sont Les Variables Automatiques Dans Powershell



PowerShell ' Variables automatiques ” sont essentiels pour la gestion du système, l'automatisation et les activités de script. Ces variables sont intégrées au runtime PowerShell et servent d'espaces réservés pour stocker et référencer des informations spécifiques lors de l'exécution d'un script ou d'une commande. Comprendre et utiliser efficacement ces variables automatiques peut grandement améliorer l'efficacité et la fonctionnalité des scripts PowerShell.

Cet article vise à explorer le concept de « variables automatiques » dans PowerShell, leur signification et la manière dont elles peuvent être exploitées dans divers scénarios.







Que sont les variables automatiques dans PowerShell ?

Pour commencer, approfondissons la définition de ' Variables automatiques ”. Ces variables sont prédéfinies et sont créées automatiquement par PowerShell lors de l'exécution du script. Celles-ci ont des objectifs différents, notamment fournir des informations sur le système, des arguments de ligne de commande, des détails liés au script et bien plus encore.



PowerShell propose plusieurs 'variables automatiques' et chacune d'entre elles sert un objectif distinct dans l'exécution de scripts. Ces variables sont les suivantes :



1. $PSVersionTable

L'une des variables automatiques fondamentales de PowerShell est ' $PSVersionTable ”. Cette variable permet aux développeurs de scripts de vérifier la version de PowerShell utilisée, ce qui peut être crucial lors de l'examen de la compatibilité et de la disponibilité de certaines caractéristiques et fonctionnalités.





Les propriétés suivantes sont associées à cette variable :

Version PS : Renvoie le numéro de version de PowerShell.



PSÉdition : Pour PowerShell 4 et versions antérieures, ainsi que PowerShell 5.1 sur les versions complètes de Windows, cette propriété a la valeur 'Desktop'. Cette caractéristique a la valeur de Core pour PowerShell 6 et versions ultérieures, ainsi que Windows PowerShell 5.1 pour les éditions à faible encombrement telles que Windows Nano Server ou Windows IoT.

GitCommitId : Récupère l'ID de validation GitHub des fichiers source.

TOI: Enregistre des informations sur le système informatique utilisé par PowerShell.

Plateforme: Renvoie la plate-forme de prise en charge du système d'exploitation. Unix a de la valeur sur Linux et macOS. Découvrez $IsMacOs et $IsLinux.

Versions compatibles PS : Les versions de PowerShell compatibles avec la version actuelle sont renvoyées.

PSRemotingProtocolVersion : Renvoie le numéro de version du protocole de gestion à distance PowerShell.

Version de sérialisation : Renvoie la version de la méthode de sérialisation.

WSManStackVersion : Renvoie le numéro de version de la pile WS-Management.

$ PSVersionTable

2. $Args

Une autre variable automatique essentielle dans PowerShell est ' $Args ”, qui contient un tableau d'arguments de ligne de commande transmis à un script ou à une fonction. Cette variable permet aux développeurs de traiter et de manipuler dynamiquement les arguments fournis dans leurs scripts.

Lors de la définition d'une fonction, vous pouvez soit utiliser le mot-clé 'param' pour déclarer les paramètres, soit ajouter une liste de paramètres séparés par des virgules entre parenthèses après le nom de la fonction. La variable '$Args' d'une action d'événement stocke des objets qui servent d'espaces réservés pour les paramètres d'événement de l'événement en cours de gestion :

pour chaque ( $arg dans $Args ) {
Hôte d'écriture $arg
}

3. $MonInvocation

Le ' $MonInvocation ” La variable fournit des données d'arrière-plan cruciales sur le script ou la procédure en cours d'exécution. Il offre des propriétés telles que le nom du script, le numéro de ligne de script et si le script est exécuté de manière interactive ou non interactive. Ces propriétés aident les développeurs de scripts à implémenter une logique de branchement, à définir des mécanismes de gestion des erreurs ou à générer une journalisation et des rapports significatifs :

$ MonInvocation

4. $Erreur

Une variable automatique moins connue ' $Erreur ”, capture efficacement tous les messages d'erreur ou exceptions qui se produisent lors de l'exécution du script. '$ Error' est accessible pour récupérer des détails d'erreur spécifiques tels que des messages d'exception, des traces de pile ou des codes d'erreur, permettant une analyse et un débogage détaillés.

L'erreur la plus récente est représentée par le premier objet d'erreur dans le tableau ' $Erreur[0] “. Vous pouvez utiliser l'option commune ErrorAction avec la valeur 'Ignore' pour empêcher les erreurs d'être ajoutées au tableau '$Error'.

Supposons que nous tapions une commande précise :

IP [ onfig

Maintenant, si nous entrons dans l'applet de commande '$Error':

$ Erreur

5. $PSCmdlet

Lorsque vous travaillez avec des modules PowerShell, la variable automatique ' $PSCmdlet » entre en vigueur. Cette variable permet d'accéder à l'instance actuelle de l'applet de commande ou de la fonction appelée, facilitant ainsi l'interaction directe avec ses propriétés et ses méthodes.

À l'aide de « $PSCmdlet », les développeurs de scripts avancés peuvent affiner et améliorer le comportement des modules en étendant ou en modifiant les fonctionnalités intégrées. Vous pouvez utiliser les attributs et méthodes de l'objet dans votre applet de commande ou code de fonction en réponse aux critères d'utilisation :

fonction typeof-psCmdlet {
[ cmdletBinding ( ) ] paramètre ( )
écho 'type de ` $psCmdlet est $($psCmdlet.GetType() .Nom et prénom)'
}

typeof-psCmdlet

En plus des variables susmentionnées, PowerShell comprend des variables automatiques telles que $HOME, $PROFILE, $PWD et bien d'autres, qui servent à différentes fins, telles que l'accès aux entrées, le suivi des erreurs, la récupération des informations sur l'environnement, la gestion des paramètres, etc. Ces variables sont listées ci-dessous :

Variables automatiques Description
$$ Contient le dernier jeton de la ligne précédente reçu par la session PowerShell.
$ ? Stocke l'état d'exécution de la dernière commande.
$^ Contient le premier jeton de la dernière ligne reçu par la session.
$_ Représente l'objet actuel dans le pipeline.
$ConsoleFileName Contient le chemin du fichier de console (.psc1) le plus récemment utilisé dans la session.
$EnabledExperimentalFeatures Contient une liste des fonctionnalités expérimentales activées.
$Événement Contient un objet 'PSEventArgs' représentant l'événement en cours de traitement.
$EventArgs Contient le premier argument d'événement de l'événement en cours de traitement.
$EventSubscribe Représente l'abonné à l'événement en cours de traitement.
$ExecutionContext Représente le contexte d'exécution de l'hôte PowerShell.
$faux Représente la valeur booléenne 'False'.
$ pour chaque Contient l'énumérateur d'une boucle 'for-Each'.
$MAISON Contient le chemin complet du répertoire personnel de l'utilisateur.
$Hôte Représente l'application hôte actuelle pour PowerShell.
$entrée Sert d'énumérateur pour toutes les entrées transmises à une fonction ou à un script.
$IsCoreCLR Indique si la session est en cours d'exécution sur le runtime .NET Core (CoreCLR).
$EstLinux Indique si la session s'exécute sur un système d'exploitation Linux.
$EstMacOS Indique si la session est en cours d'exécution sur un système d'exploitation MacOS.
$EstWindows Identifie si la session est en cours d'exécution sur un système d'exploitation Windows.
$LASTEXITCODE Stocke le code de sortie du dernier programme natif ou script PowerShell.
$Matchs Contient les chaînes correspondantes des opérateurs '-match' et '-notmatch'.
$NestedPromptLevel Suit le niveau d'invite actuel dans les commandes imbriquées ou les scénarios de débogage.
$null Représente une valeur nulle ou vide.
$PID Contient l'identificateur de processus (PID) de la session PowerShell.
$PROFIL Contient le chemin d'accès complet du profil PowerShell pour l'utilisateur actuel et l'application hôte.
$PSBoundParameters Contient un dictionnaire de paramètres passés à un script ou une fonction et leurs valeurs.
$PSCommandPath Contient le chemin d'accès complet et le nom de fichier du script en cours d'exécution.
$PSCulture Reflète la culture de l'espace d'exécution PowerShell actuel.
$PSEdition Contient les informations d'édition de PowerShell.
$PSHOME Contient le chemin complet du répertoire d'installation de PowerShell.
$PSItem Identique à $_, représente l'objet actuel dans le pipeline.
$PSScriptRoot Contient le chemin complet du répertoire parent du script en cours d'exécution.
$PSSenderInfo Contient des informations sur l'utilisateur qui a démarré la PSSession.
$PSUICulture Reflète la culture de l'interface utilisateur (IU) configurée dans le système d'exploitation.
$PWD Représente le répertoire de travail actuel de la session PowerShell.
$Expéditeur Contient l'objet qui a généré un événement.
$ShellId Contient l'identifiant du shell courant.
$StackTrace Stocke la trace de la pile pour l'erreur la plus récente.
$ interrupteur Contient l'énumérateur de l'instruction 'Switch'.
$ceci Fait référence à l'instance d'une classe dans les blocs de script qui étendent les classes.
$ vrai Représente la valeur booléenne 'True'.

Toutes les 'variables automatiques' de PowerShell peuvent être trouvées en exécutant la commande ci-dessous :

Get-Variable

Conclusion

' Variables automatiques ' forment l'épine dorsale des scripts PowerShell, permettant aux développeurs d'obtenir des informations sur le système, les arguments de ligne de commande, le contexte d'exécution des scripts, etc. En exploitant des variables automatiques telles que « $PSVersionTable », « $Args », « $MyInvocation », « $Error » et autres, les développeurs de scripts PowerShell peuvent créer des pratiques d'administration système simplifiées.