Variables définies par l’utilisateur

 

Sapplique à :Exchange Server 2013

Une variable est un emplacement de stockage des informations. Contrairement à de nombreux environnements de programmation, dans Exchange Management Shell, vous n’avez pas à déclarer une variable avant son utilisation.

Vous désignez une variable en ajoutant une chaîne devant un signe dollar ($). Il est recommandé d’entourer la chaîne d’accolades ({ }) si cette chaîne contient des espaces ou d’autres caractères spéciaux. La notation de référence de tableau ([ ]) vous permet de vous occuper des éléments d’un tableau ou d’une variable de table de hachage. Pour plus d’informations, voir Tableaux.

Pour plus d’informations sur les variables définies par l’utilisateur dans l’environnement de ligne de commande Exchange Management Shell, consultez les sections suivantes :

Utilisation des variables pour le stockage des valeurs

Stockage de la sortie d’une commande dans une variable

Stockage de la sortie d’une commande Dir dans une variable

Les variables sont très importantes pour le stockage des valeurs. L’opérateur d’affectation vous permet d’affecter des valeurs aux variables. Pour plus d'informations sur les opérateurs, consultez la rubrique Syntaxe.

Par exemple, la commande ci-après vous permet d’affecter une valeur 8 à la variable $Example:

$Example = 8

Cette commande permet d’affecter le nombre entier 8 à la variable $Example. Vous pouvez alors appeler la variable $Example plus tard dans une autre commande pour rappeler la valeur. Les valeurs spécifiées dans une variable sont traitées exactement comme ci la valeur contenue était saisie dans l’emplacement de spécification de la variable. Par exemple, les deux commandes ci-après sont équivalentes si à la valeur $Example2 est assignée la valeur "Hello":

Write-Host $Example2
Write-Host "Hello"

Vous pouvez également stocker les sorties des commandes dans une variable pour un usage ultérieur. Lorsque vous affectez une commande à une variable, cette commande est évaluée au moment où elle est exécutée. La sortie de cette commande est attribuée à la variable. Par exemple, si vous exécutez $CurrentDate = Get-Date sur la ligne de commande, et appelez $CurrentDate à répétition durant plusieurs secondes, la valeur signalée est la même chaque fois que la variable est appelée.

Lorsque vous affectez la sortie d’une commande à une variable, vous pouvez également accéder aux propriétés et aux méthodes de l’objet sous-jacent. Par exemple, pour afficher les propriétés et les méthodes disponibles lorsque vous affectez Get-Date à $CurrentDate, utilisez la commande $CurrentDate | Get-Member. La commande $CurrentDate | Get-Member -MemberType Property permet de renvoyer les propriétés ci-après dans une liste:

Name        MemberType Definition
----        ---------- ----------
Date        Property   System.DateTime Date {get;}
Day         Property   System.Int32 Day {get;}
DayOfWeek   Property   System.DayOfWeek DayOfWeek {get;}
DayOfYear   Property   System.Int32 DayOfYear {get;}
Hour        Property   System.Int32 Hour {get;}
Kind        Property   System.DateTimeKind Kind {get;}
Millisecond Property   System.Int32 Millisecond {get;}
Minute      Property   System.Int32 Minute {get;}
Month       Property   System.Int32 Month {get;}
Second      Property   System.Int32 Second {get;}
Ticks       Property   System.Int64 Ticks {get;}
TimeOfDay   Property   System.TimeSpan TimeOfDay {get;}
Year        Property   System.Int32 Year {get;}

Vous pouvez alors appeler l’une de ces propriétés en saisissant la variable, un point (.), puis la propriété à afficher. La commande suivante permet par exemple d’afficher l’année stockée dans une variable:

$CurrentDate.Year

En accédant aux propriétés d’une variable, vous pouvez facilement manipuler et utiliser chaque information stockée dans cette variable sans l’analyse de texte.

Vous pouvez également stocker la sortie de la commande Dir dans une variable. Étant donné que la commande Dir renvoie de multiples lignes pendant son exécution, chaque ligne retournée est stockée dans une variable comme nouvel élément de tableau. Vous pouvez alors accéder à chaque objet de fichier stocké dans le tableau nouvellement créé. Pour plus d’informations sur les tableaux, consultez la rubrique Tableaux.

La commande suivante affecte la sortie de la commande Dir à la variable $DirOutput :

$DirOutput = Dir

Vous pouvez alors sélectionner un objet de fichier spécifique en spécifiant l’index de tableau à afficher comme suit :

$DirOutput[1].Name

Vous pouvez également créer une simple boucle qui explore l’ensemble du tableau et affiche le nom et la taille de tout fichier qui y est stocké comme suit :

0..$DirOutput.Length | ForEach { $DirOutput[$_].Name + " is " + $DirOutput[$_].Length + " bytes long." }

La liste suivante examine cet exemple :

  • La commande 0..$DirOutput.Length instruit l’environnement de ligne de commande Exchange Management Shell de sortir un nombre entier à partir de 0 jusqu’à la longueur maximale du tableau stocké dans la variable $DirOutput.

  • La sortie de la commande 0..$DirOutput.Length est transmise à la commande ForEach qui boucle tout élément du tableau jusqu’à ce qu’elle atteigne la fin du tableau. La commande ForEach exécute les commandes contenues entre les accolades « { } ».

  • La variable $_ stocke l’objet en cours contenu dans le pipeline. Dans ce cas, l’objet du pipeline est un nombre entier généré par la commande 0..$DirOutput.Length comptant à partir de 0 jusqu’à la longueur maximale du tableau. Cette variable est utilisée dans la commande $DirOutput[$_].Name et la commande $DirOutput[$_].Length pour sélectionner l’élément de tableau auquel accéder.

  • Pour plus d’informations sur la variable $_ , consultez la rubrique Variables de l’environnement Shell.

  • Le signe plus « + » concatène la sortie de la commande $DirOutput[$_].Name et de la commande $DirOutput[$_].Length, avec les chaînes fournies, pour créer une sortie semblable à la sortie suivante :

    abv_dg.dll is 416144 bytes long.
    addxa.dll is 285056 bytes long.
    ASDat.MSI is 5626880 bytes long.
    ASEntDat.MSI is 5626880 bytes long.
    ASEntIRS.MSI is 910336 bytes long.
    ASEntSig.MSI is 45056 bytes long.
    BPA.Common.dll is 211848 bytes long.
    BPA.ConfigCollector.dll is 101272 bytes long.
    BPA.NetworkCollector.dll is 52128 bytes long.
    

Ces exemples montrent que vous pouvez utiliser la propriété Length plusieurs fois pour afficher des informations différentes sur la même variable. Cela est possible car plusieurs types de données sont stockés dans la variable $DirOutput. Le premier type de données est l’objet de répertoire lui-même, le second correspond aux objets de fichier. Lorsque vous exécutez la commande $DirObject.Length, sans spécifier d’index de tableau, vous accéder aux types d’objet parent d’annuaire stockés dans le tableau. Lorsque vous spécifiez un index de tableau tel que $DirObject[5].Length, vous accédez aux objets enfants de fichier stockés dans l’objet d’annuaire.

Ce comportement existe dans de nombreux objets. De façon générale, vous pouvez accéder à plusieurs niveaux de données d’objet contenus dans une variable unique. La capacité à accéder à ces données rend l’environnement de ligne de commande Exchange Management Shell très flexible.

 
Afficher: