about_Automatic_Variables

Mis à jour: mai 2014

S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

Insérez l'introduction ici.

RUBRIQUE

about_Automatic_Variables

DESCRIPTION COURTE

Décrit les variables qui stockent des informations d’état pour Windows PowerShell. Ces variables sont créées et gérées par Windows PowerShell.

DESCRIPTION DÉTAILLÉE

Voici une liste des variables automatiques dans Windows PowerShell :

$$

Contient le dernier jeton dans la dernière ligne que la session reçoit.

$?

Contient l’état d’exécution de la dernière opération. Elle contient la valeur TRUE si la dernière opération a réussi et FALSE si elle a échoué.

$^

Contient le premier jeton dans la dernière ligne que la session reçoit.

$_

Identique à $PSItem. Contient l’objet actuel dans l’objet de pipeline. Vous pouvez utiliser cette variable dans les commandes qui exécutent une action sur chaque objet ou sur les objets sélectionnés dans un pipeline.

$ARGS

Contient un tableau des paramètres non déclarés et/ou des valeurs de paramètres qui sont passées à une fonction, un script ou un bloc de script. Quand vous créez une fonction, vous pouvez déclarer les paramètres à l’aide du mot clé param ou en ajoutant une liste de paramètres séparés par des virgules entre parenthèses après le nom de fonction.

Dans une action d’événement, la variable $Args contient des objets qui représentent les arguments de l’événement en cours de traitement. Cette variable est remplie uniquement dans le bloc Action d’une commande d’inscription d’événement. La valeur de cette variable figure également dans la propriété SourceArgs de l’objet PSEventArgs (System.Management.Automation.PSEventArgs) retourné par Get-Event.

$CONSOLEFILENAME

Contient le chemin d’accès du fichier de console (.psc1) qui a été utilisé le plus récemment dans la session. Cette variable est renseignée quand vous démarrez Windows PowerShell avec le paramètre PSConsoleFile ou que vous utilisez l’applet de commande Export-Console pour exporter les noms des composants logiciels enfichables dans un fichier de console.

Quand vous utilisez l’applet de commande Export-Console sans paramètres, elle met automatiquement à jour le fichier de console qui a été utilisé le plus récemment dans la session. Vous pouvez utiliser cette variable automatique pour identifier le fichier à mettre à jour.

$ERROR

Contient un tableau d’objets d’erreur qui représentent les erreurs les plus récentes. L’erreur la plus récente est le premier objet d’erreur dans le tableau ($Error[0]).

Pour empêcher l’ajout d’une erreur au tableau $Error, utilisez le paramètre commun ErrorAction avec la valeur Ignore. Pour plus d’informations, consultez about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216).

$EVENT

Contient un objet PSEventArgs qui représente l’événement en cours de traitement. Cette variable est remplie uniquement dans le bloc Action d’une commande d’inscription d’événement, par exemple Register-ObjectEvent. La valeur de cette variable est le même objet que celui retourné par l’applet de commande Get-Event. Par conséquent, vous pouvez utiliser les propriétés de la variable $Event, telles que $Event.TimeGenerated, dans un bloc de script Action.

$EVENTARGS

Contient un objet qui représente le premier argument d’événement qui dérive de la valeur EventArgs de l’événement en cours de traitement. Cette variable est remplie uniquement dans le bloc Action d’une commande d’inscription d’événement. La valeur de cette variable figure également dans la propriété SourceEventArgs de l’objet PSEventArgs (System.Management.Automation.PSEventArgs) retourné par Get-Event.

$EVENTSUBSCRIBER

Contient un objet PSEventSubscriber qui représente l’abonné à l’événement en cours de traitement. Cette variable est remplie uniquement dans le bloc Action d’une commande d’inscription d’événement. La valeur de cette variable est le même objet que celui retourné par l’applet de commande Get-EventSubscriber.

$EXECUTIONCONTEXT

Contient un objet EngineIntrinsics qui représente le contexte d’exécution de l’hôte Windows PowerShell. Vous pouvez utiliser cette variable pour rechercher les objets d’exécution qui sont disponibles pour les applets de commande.

$FALSE

Contient FALSE. Vous pouvez utiliser cette variable pour représenter FALSE dans les commandes et scripts au lieu d’utiliser la chaîne « false ». La chaîne peut être interprétée comme TRUE si elle est convertie en une chaîne non vide ou un entier différent de zéro.

$FOREACH

Contient l’énumérateur (et non les valeurs résultantes) d’une boucle ForEach. Vous pouvez utiliser les propriétés et méthodes des énumérateurs sur la valeur de la variable $ForEach. Cette variable n’existe que pendant l’exécution de la boucle ForEach. Elle est supprimée une fois que la boucle est terminée. Pour plus d’informations, consultez about_ForEach.

$HOME

Contient le chemin d’accès complet du répertoire de base de l’utilisateur. Cette variable est l’équivalent des variables d’environnement %homedrive%%homepath%, généralement C:\Users\<nom_utilisateur>.

$HOST

Contient un objet qui représente l’application hôte actuelle pour Windows PowerShell. Vous pouvez utiliser cette variable pour représenter l’hôte actuel dans les commandes, ou pour afficher ou modifier les propriétés de l’hôte, par exemple $Host.version, $Host.CurrentCulture ou $host.ui.rawui.setbackgroundcolor("Red").

$INPUT

Contient un énumérateur qui énumère toutes les entrées qui sont passées à une fonction. La variable $input est disponible uniquement pour les fonctions et les blocs de script (qui sont des fonctions sans nom). Dans le bloc Process d’une fonction, la variable $input énumère l’objet qui est actuellement dans le pipeline. Quand le bloc Process est terminé, comme il ne reste aucun objet dans le pipeline, la variable $input énumère une collection vide. Si la fonction ne dispose pas d’un bloc Process, la variable $input énumère la collection de toutes les entrées passées à la fonction dans le bloc End.

$LASTEXITCODE

Contient le code de sortie du dernier programme Windows qui a été exécuté.

$MATCHES

La variable $Matches fonctionne avec les opérateurs -match et -notmatch. Quand vous envoyez une entrée scalaire à l’opérateur -match ou -notmatch et que l’un d’eux détecte une correspondance, ils retournent une valeur booléenne et remplissent la variable automatique $Matches avec une table de hachage de toutes les valeurs de chaîne qui ont été mises en correspondance. Pour plus d’informations sur l’opérateur -match, consultez about_comparison_operators.

$MYINVOCATION

Contient des informations sur la commande actuelle, comme le nom, les paramètres et les valeurs de paramètre, ainsi que des informations sur la façon dont la commande a été démarrée, appelée ou « invoquée », telles que le nom du script qui a appelé la commande actuelle.

$MyInvocation est renseignée uniquement pour les scripts, les fonctions et les blocs de script. Vous pouvez utiliser les informations de l’objet System.Management.Automation.InvocationInfo retourné par $MyInvocation dans le script actuel, comme le chemin d’accès et le nom de fichier du script ($MyInvocation.MyCommand.Path) ou le nom d’une fonction ($MyInvocation.MyCommand.Name) pour identifier la commande actuelle. Cela est particulièrement utile pour rechercher le nom du script actuel.

À compter de Windows PowerShell 3.0, $MyInvocation présente les nouvelles propriétés suivantes.

       -- PSScriptRoot: Contains the full path to the script that invoked the
          current command. The value of this property is populated only when
          the caller is a script.  
       -- PSCommandPath: Contains the full path and file name of the script that
          invoked the current command. The value of this property is populated
          only when the caller is a script.  

Contrairement aux variables automatiques $PSScriptRoot et $PSCommandPath, les propriétés PSScriptRoot et PSCommandPath de la variable automatique $MyInvocation contiennent des informations sur l’utilisateur demandant ou le script appelant, pas le script actuel.

$NESTEDPROMPTLEVEL

Contient le niveau d’invite actuel. La valeur 0 indique le niveau d’invite d’origine. La valeur est incrémentée quand vous passez à un niveau imbriqué et décrémentée quand vous le quittez.

Par exemple, Windows PowerShell présente une invite de commandes imbriquée quand vous utilisez la méthode $Host.EnterNestedPrompt. Windows PowerShell présente également une invite de commandes imbriquée quand vous atteignez un point d’arrêt dans le débogueur Windows PowerShell.

Quand vous passez à une invite imbriquée, Windows PowerShell suspend la commande active, enregistre le contexte d’exécution et incrémente la valeur de la variable $NestedPromptLevel. Pour créer des invites de commandes imbriquées supplémentaires (jusqu’à 128 niveaux) ou pour revenir à l’invite de commande d’origine, exécutez la commande ou tapez « exit ».

La variable $NestedPromptLevel vous permet de suivre le niveau d’invite. Vous pouvez créer une autre invite de commandes Windows PowerShell qui inclut cette valeur afin qu’elle soit toujours visible.

$NULL

$null est une variable automatique qui contient une valeur NULL ou vide. Vous pouvez utiliser cette variable pour représenter une valeur absente ou non définie dans les commandes et scripts.

Windows PowerShell traitant $null comme un objet avec une valeur, autrement dit comme un espace réservé explicite, vous pouvez utiliser $null pour représenter une valeur vide dans une série de valeurs.

Par exemple, quand $null est incluse dans une collection, elle est considérée comme l’un des objets.

           C:\PS> $a = ".dir", $null, ".pdf"
           C:\PS> $a.count
           3

Si vous redirigez la variable $null vers l’applet de commande ForEach-Object, elle génère une valeur pour $null, tout comme pour les autres objets.

           PS C:\ps-test> ".dir", "$null, ".pdf" | Foreach {"Hello"}
           Hello
           Hello
           Hello

Par conséquent, vous ne pouvez pas utiliser $null pour indiquer « aucune valeur de paramètre ». La valeur de paramètre $null remplace la valeur de paramètre par défaut.

Toutefois, étant donné que Windows PowerShell traite la variable $null comme un espace réservé, vous pouvez l’utiliser dans des scripts tels que le suivant, qui ne fonctionneraient pas si $null était ignorée.

           $calendar = @($null, $null, “Meeting”, $null, $null, “Team Lunch”, $null)
           $days = Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
           $currentDay = 0

           foreach($day in $calendar)
           {
               if($day –ne $null)
               {
                   "Appointment on $($days[$currentDay]): $day"
               }
    
               $currentDay++
           } 

           Appointment on Tuesday: Meeting
           Appointment on Friday: Team lunch

$OFS

$OFS est une variable spéciale qui stocke une chaîne que vous souhaitez utiliser comme un séparateur de champ de sortie. Utilisez cette variable quand vous convertissez un tableau en une chaîne. Par défaut, la valeur de $OFS est « », mais vous pouvez modifier la valeur de $OFS dans votre session en tapant $OFS = "<valeur>». Si vous attendez la valeur par défaut « » dans votre script, module ou sortie de configuration, vérifiez que la valeur par défaut de $OFS n’a pas été modifiée ailleurs dans votre code.

Exemples :

PS> $a="1","2","3","4"
           PS> $a
           1
           2
           3
           4

PS> [string]$a
           1 2 3 4
           PS> $OFS="";[string]$a
           1234

PS> $OFS=",";[string]$a
           1,2,3,4

PS> $OFS="--PowerShellRocks--";[string]$a
           1--PowerShellRocks--2--PowerShellRocks--3--PowerShellRocks--4
           PS> $OFS="`n`n";[string]$a
           1

           2

           3

           4

$PID

Contient l’identificateur de processus (PID) du processus qui héberge la session Windows PowerShell actuelle.

$PROFILE

Contient le chemin d’accès complet du profil Windows PowerShell pour l’utilisateur actuel et l’application hôte active. Vous pouvez utiliser cette variable pour représenter le profil dans les commandes. Par exemple, vous pouvez l’utiliser dans une commande afin de déterminer si un profil a été créé :

           test-path $profile

Vous pouvez également l’utiliser dans une commande pour créer un profil :

           new-item -type file -path $pshome -force

Vous pouvez également l’utiliser dans une commande pour ouvrir le profil dans le Bloc-notes :

           notepad $profile

$PSBOUNDPARAMETERS

Contient un dictionnaire des paramètres qui sont passés à un script ou une fonction et leurs valeurs actuelles. Cette variable a une valeur uniquement dans une étendue où les paramètres sont déclarés, comme une fonction ou un script. Vous pouvez l’utiliser pour afficher ou modifier les valeurs actuelles des paramètres ou pour passer des valeurs de paramètre à un autre script ou une autre fonction.

Exemple :

         function Test {
            param($a, $b)
            
            # Display the parameters in dictionary format.
            $PSBoundParameters
             
            # Call the Test1 function with $a and $b.
            test1 @PSBoundParameters
         }

$PSCMDLET

Contient un objet qui représente l’applet de commande ou une fonction avancée qui est en cours d’exécution.

Vous pouvez utiliser les propriétés et méthodes de l’objet dans le code d’applet de commande ou de fonction pour répondre aux conditions d’utilisation. Par exemple, la propriété ParameterSetName contient le nom du jeu de paramètres utilisé, et la méthode ShouldProcess ajoute les paramètres WhatIf et Confirm à l’applet de commande dynamiquement.

Pour plus d’informations sur la variable automatique $PSCmdlet, consultez about_Functions_Advanced.

$PSCOMMANDPATH

Contient le chemin d’accès complet et le nom de fichier du script en cours d’exécution. Cette variable est valide dans tous les scripts.

$PSCULTURE

Contient le nom de la culture actuellement utilisée dans le système d’exploitation. La culture détermine le format d’affichage des éléments, tels que les nombres, devises et dates. Il s’agit de la valeur de la propriété System.Globalization.CultureInfo.CurrentCulture.Name du système. Pour obtenir l’objet System.Globalization.CultureInfo pour le système, utilisez l’applet de commande Get-Culture.

$PSDEBUGCONTEXT

Pendant le débogage, cette variable contient des informations sur l’environnement de débogage. Sinon, elle contient une valeur NULL. Par conséquent, vous pouvez l’utiliser pour indiquer si le débogueur a obtenu le contrôle. Quand elle est renseignée, elle contient un objet PsDebugContext qui possède des propriétés Breakpoints et InvocationInfo. La propriété InvocationInfo possède plusieurs propriétés utiles, y compris la propriété Location. La propriété Location indique le chemin d’accès du script en cours de débogage.

$PSHOME

Contient le chemin d’accès complet du répertoire d’installation pour Windows PowerShell, en règle générale %windir%\System32\WindowsPowerShell\v1.0. Vous pouvez utiliser cette variable dans les chemins d’accès des fichiers Windows PowerShell. Par exemple, la commande suivante recherche le mot « variable » dans les rubriques d’aide conceptuelle :

            Select-String -Pattern Variable -Path $pshome\*.txt

$PSITEM

Identique à $_. Contient l’objet actuel dans l’objet de pipeline. Vous pouvez utiliser cette variable dans les commandes qui exécutent une action sur chaque objet ou sur les objets sélectionnés dans un pipeline.

$PSSCRIPTROOT

Contient le répertoire à partir duquel un script est exécuté.

Dans Windows PowerShell 2.0, cette variable est valide uniquement dans les modules de script (.psm1). À compter de Windows PowerShell 3.0, elle est valide dans tous les scripts.

$PSSENDERINFO

Contient des informations sur l’utilisateur qui a démarré la session PSSession, y compris l’identité de l’utilisateur et le fuseau horaire de l’ordinateur d’origine. Cette variable est disponible uniquement dans les sessions PSsession.

La variable $PSSenderInfo inclut une propriété configurable par l’utilisateur, ApplicationArguments qui, par défaut, contient uniquement la variable $PSVersionTable de la session d’origine. Pour ajouter des données à la propriété ApplicationArguments, utilisez le paramètre ApplicationArguments de l’applet de commande New-PSSessionOption.

$PSUICULTURE

Contient le nom de la culture d’interface utilisateur qui est actuellement utilisée dans le système d’exploitation. La culture d'interface utilisateur détermine les chaînes de texte utilisées pour les éléments d'interface utilisateur, tels que les menus et les messages. Il s’agit de la valeur de la propriété System.Globalization.CultureInfo.CurrentUICulture.Name du système. Pour obtenir l’objet System.Globalization.CultureInfo pour le système, utilisez l’applet de commande Get-UICulture.

$PSVERSIONTABLE

Contient une table de hachage en lecture seule qui affiche des détails sur la version de Windows PowerShell qui s’exécute dans la session active. La table inclut les éléments suivants :

    CLRVersion:            The version of the common language runtime (CLR)

    BuildVersion:          The build number of the current version

        PSVersion:             The Windows PowerShell version number

          WSManStackVersion:     The version number of the WS-Management stack

    PSCompatibleVersions:  Versions of Windows PowerShell that are
                                 compatible with the current version

          SerializationVersion   The version of the serialization method

          PSRemotingProtocolVersion
                                 The version of the Windows PowerShell remote
                                 management protocol

$PWD

Contient un objet chemin d’accès qui représente le chemin d’accès complet du répertoire actif.

$REPORTERRORSHOWEXCEPTIONCLASS

$REPORTERRORSHOWINNEREXCEPTION
$REPORTERRORSHOWSOURCE
$REPORTERRORSHOWSTACKTRACE

Les variables « ReportErrorShow » sont définies dans Windows PowerShell, mais ne sont pas implémentées. Get-Variable les obtient, mais elles ne contiennent pas de données valides.

$SENDER

Contient l’objet qui a généré cet événement. Cette variable est remplie uniquement dans le bloc Action d’une commande d’inscription d’événement. La valeur de cette variable figure également dans la propriété Sender de l’objet PSEventArgs (System.Management.Automation.PSEventArgs) retourné par Get-Event.

$SHELLID

Contient l’identificateur de l’interpréteur de commandes actuel.

$STACKTRACE

Contient une arborescence des appels de procédure pour l’erreur la plus récente.

$THIS

Dans un bloc de script qui définit une propriété ou une méthode de script, la variable $This fait référence à l’objet qui est étendu.

$TRUE

Contient TRUE. Vous pouvez utiliser cette variable pour représenter la valeur TRUE dans les commandes et scripts.

VOIR AUSSI

about_Hash_Tables

about_Preference_Variables

about_Variables