variables définies par l'utilisateur

 

S’applique à : Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Dernière rubrique modifiée : 2006-09-21

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 sur les tableaux, consultez la rubrique Tableaux.

Utilisation des variables pour le stockage des valeurs

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"

Stockage de la sortie d’une commande dans une variable

Vous pouvez également stocker les sorties des commandes dans une variable pour un usage ultérieure. 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 cmdlet $CurrentDate | Get-Member. La commande $CurrentDate | Get-Member, permet de renvoyer les propriétés ci-après dans une liste :

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;}
DateTime             ScriptProperty System.Object DateTime {get=if ($this.Di...

Vous pouvez alors appeler l’une de ces propriétés en saisissant la variable, une période (.), ensuite, 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.

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

Vous pouvez également stocker la sortie de la commande Dir dans une variable. Etant 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 ci-après 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 ainsi qu’il suit :

$DirOutput[1].Name

Vous pouvez également créer une simple boucle qui fait le tour de tout le tableau et affiche le nom et la taille de tout fichier stocké dans le tableau ainsi qu’il suit :

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

La liste suivante examine cet exemple :

  • La commande 0..$DirOutput.Length instruis 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 canalisée vers 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 produit 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 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 c'est l'objet de répertoire, le second type ce sont les 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 Exchange Management Shell très flexible.