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.