Benutzerdefinierte Variablen
Gilt für: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007
Letztes Änderungsdatum des Themas: 2006-09-21
Bei einer Variablen handelt es sich um einen Ort zum Speichern von Informationen. Anders als in vielen Programmierumgebungen müssen Sie eine Variable in der Exchange-Verwaltungsshell nicht deklarieren, bevor Sie sie verwenden.
Sie kennzeichnen eine Variable, indem Sie einer Zeichenfolge ein Dollarzeichen voranstellen ($
). Wenn die Zeichenfolge Leerzeichen oder Sonderzeichen enthält, müssen Sie sie in geschweifte Klammern ({ }
) einschließen. Mithilfe der Arrayreferenznotation ([ ]
) können Sie die Elemente einer Array- oder Hashtabellenvariable angeben.
Weitere Informationen zu Arrays finden Sie unter Arrays.
Speichern von Werten mithilfe von Variablen
Variablen sind sehr nützlich, wenn Werte gespeichert werden sollen. Sie können Werten Variablen mithilfe eines Zuweisungsoperators zuweisen. Weitere Informationen zu Operatoren finden Sie unter Syntax.
Wenn Sie beispielsweise den Wert 8
der Variablen $Example
zuweisen möchten, verwenden Sie hierfür den folgenden Befehl:
$Example = 8
Dieser Befehl weist die ganze Zahl 8
der Variablen $Example
zu. Die Variable $Example
können Sie später in einem anderen Befehl aufrufen, um den Wert erneut aufzurufen. Die in einer Variablen angegebenen Werte werden so behandelt, als sei der in der Variablen enthaltene Wert an der Stelle eingegeben worden, an der die Variable angegeben wurde. Beispielsweise entsprechen sich die folgenden beiden Befehle, wenn $Example2
der Wert "Hello"
zugewiesen ist:
Write-Host $Example2
Write-Host "Hello"
Speichern der Ausgabe eines Befehls in einer Variablen
Sie können auch die Ausgabe von Befehlen zur späteren Verwendung in einer Variablen speichern. Wenn Sie einer Variablen einen Befehl zuweisen, wird der Befehl bei der Ausführung ausgewertet. Die Ausgabe dieses Befehls wird der Variablen zugewiesen. Wenn Sie beispielsweise $CurrentDate = Get-Date
in der Befehlszeile ausführen und anschließend wiederholt mehrere Sekunden lang $CurrentDate
aufrufen, wird bei jedem Aufruf der Variablen derselbe Wert gemeldet.
Wenn Sie die Ausgabe eines Befehls einer Variablen zuweisen, können Sie auch auf die Eigenschaften und Methoden des zugrunde liegenden Objekts zugreifen. Um beispielsweise die Eigenschaften und Methoden anzuzeigen, die beim Zuweisen von Get-Date
zu $CurrentDate
verfügbar sind, können Sie den Befehl $CurrentDate | Get-Member
verwenden. Wenn Sie den Befehl $CurrentDate | Get-Member
verwenden, werden die folgenden Eigenschaften in einer Liste zurückgegeben:
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...
Diese Eigenschaften können Sie aufrufen, indem Sie die Variable, einen Punkt (.
) und anschließend die Eigenschaft eingeben, die angezeigt werden soll. Um beispielsweise das in einer Variable gespeicherte Jahr anzuzeigen, geben Sie den folgenden Befehl ein:
$CurrentDate.Year
Durch den Zugriff auf die Eigenschaften einer Variablen können Sie problemlos die einzelnen in einer Variable gespeicherten Informationselemente ändern und verwenden, ohne dass eine Textanalyse erforderlich ist.
Speichern der Ausgabe des Befehls "Dir" in einer Variablen
Sie haben auch die Möglichkeit, die Ausgabe des Befehls Dir
in einer Variablen zu speichern. Da der Befehl Dir
mehrere Zeilen zurückgibt, wird jede zurückgegebene Zeile in einer Variablen als neues Arrayelement gespeichert. Sie können dann auf jedes Dateiobjekt zugreifen, dass in dem neu erstellten Array gespeichert ist. Weitere Informationen zu Arrays finden Sie unter Arrays.
Der folgende Befehl weist die Ausgabe des Befehls Dir
der Variablen $DirOutput
zu:
$DirOutput = Dir
Sie können dann ein bestimmtes Dateiobjekt auswählen, indem Sie wie folgt den gewünschten Arrayindex angeben:
$DirOutput[1].Name
Alternativ können Sie folgendermaßen eine einfache Schleife erstellen, die das gesamte Array durchläuft und den Namen und die Dateigröße jeder in dem Array gespeicherten Datei anzeigt:
0..$DirOutput.Length | ForEach { $DirOutput[$_].Name + " is " + $DirOutput[$_].Length + " bytes long." }
Diese Beispiel wird in der folgenden Liste untersucht:
Der Befehl
0..$DirOutput.Length
weist die Exchange-Verwaltungsshell an, eine ganze Zahl zwischen0
und der maximalen Länge des in der Variablen$DirOutput
gespeicherten Arrays auszugeben.Die Ausgabe des Befehls
0..$DirOutput.Length
wird über eine Pipe an den BefehlForEach
übergeben, der in Form einer Schleife jedes Element des Arrays durchläuft, bis das Endes des Arrays erreicht ist. Der BefehlForEach
führt die in geschweifte Klammern ({ }
) gesetzten Befehle aus.Die Variable
$_
speichert das aktuelle in der Pipeline enthaltene Objekt. In diesem Fall ist das Objekt in der Pipeline eine ganze Zahl, die von dem Befehl0..$DirOutput.Length
hervorgebracht wird, während von0
bis zu der maximalen Länge des Arrays gezählt wird. Diese Variable wird in den Befehlen$DirOutput[$_].Name
und$DirOutput[$_].Length
für die Auswahl des Arrayelements verwendet, auf das zugegriffen werden soll.Weitere Informationen über die
$
-Variable finden Sie unter Shellvariablen.Mit dem Pluszeichen (
+
) wird die Ausgabe der BefehleDirOutput[$_].Name
und$DirOutput[$_].Length
einschließlich der angegebenen Zeichenfolgen verkettet, um eine Ausgabe ähnlich der folgenden zu erzeugen: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.
Diese Beispiele zeigen, dass bei mehrmaliger Verwendung der Eigenschaft Length
unterschiedliche Informationen über dieselbe Variable angezeigt werden können. Dies ist möglich, da in der Variablen $DirOutput
mehrere Datentypen gespeichert werden. Der erste Datentyp ist das Verzeichnisobjekt selbst, während es sich beim zweiten Typ um die in den Dateiobjekten enthaltenen Daten handelt. Wenn Sie den Befehl $DirObject.Length
ausführen, ohne einen Arrayindex anzugeben, greifen Sie auf die übergeordneten Objekttypen des Verzeichnisses zu, die in dem Array gespeichert sind. Wird ein Arrayindex angegeben (zum Beispiel $DirObject[5].Length
) greifen Sie auf die untergeordneten Dateiobjekte zu, die in dem Verzeichnisobjekt gespeichert sind.
Dieses Verhalten trifft für viele Objekte zu. Sie können in der Regel auf viele Ebenen der Objektdaten zugreifen, die in einer einzigen Variable enthalten sind. Aufgrund der Möglichkeit, auf diese Daten zuzugreifen, ist die Exchange-Verwaltungsshell ausgesprochen flexibel.