Переменная является ячейкой хранения данных. В отличие от многих сред программирования, в среде управления Exchange нет необходимости объявлять переменную перед ее использованием.
Чтобы назначить переменную, добавьте перед строкой знак доллара
($
). Необходимо заключить строку в фигурные скобки
({ }
), если она содержит пробелы или другие
специальные знаки. Используя запись ссылки на индекс массива
([ ]
), можно обращаться к элементам переменной массива
или хэш-таблицы.
Дополнительные сведения о массивах см. в разделе Массивы.
Использование переменных для хранения значений
Переменные очень полезны, если нужно сохранить значение. Значения присваиваются переменным с использованием оператора присваивания. Дополнительные сведения об операторах см. в разделе Синтаксис.
Например, чтобы присвоить значение 8
переменной $Example
, воспользуйтесь следующей
командой:
Копировать код | |
---|---|
$Example = 8 |
Эта команда присваивает целочисленное значение
8
переменной $Example
. Впоследствии можно
вызвать переменную $Example
в другой команде, чтобы
получить это значение. Передача значений через переменные идентична
непосредственному вводу этих значений. Например, следующие две
команды выполняют одинаковые действия, если переменной
$Example2
присвоено значение "Hello"
:
Копировать код | |
---|---|
Write-Host $Example2 Write-Host "Hello" |
Хранение в переменной выходных данных команды
В переменных можно сохранять выходные данные команд для
их последующего использования. Если команда присвоена переменной,
результат выполнения команды вычисляется в ходе ее выполнения.
Выходное значение команды присваивается переменной. Например, при
выполнении в командной строке команды $CurrentDate =
Get-Date
и последующем вызове переменной
$CurrentDate
в течение нескольких секунд будет всегда
выводиться одно и то же значение переменной.
При присваивании переменной выходных данных команды
можно также получить доступ к свойствам и методам базового объекта.
Например, чтобы просмотреть свойства и методы, доступные после
присваивания переменной $CurrentDate
команды
Get-Date
, можно воспользоваться командой
$CurrentDate | Get-Member
. При использовании команды
$CurrentDate | Get-Member
в списке возвращаются
следующие свойства:
Копировать код | |
---|---|
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... |
Впоследствии можно вызвать любое из этих свойства,
введя переменную, точку (.
), а затем свойство, которое
нужно просмотреть. Например, чтобы просмотреть хранящийся в
переменной год, воспользуйтесь следующей командой:
Копировать код | |
---|---|
$CurrentDate.Year |
Доступ к свойствам переменной позволяет с легкостью получать и использовать любую часть данных, хранящихся в переменной, не прибегая к использованию разбора текста.
Хранение в переменной выходных данных команды Dir
В переменной можно хранить выходные данные команды
Dir
. Так как команда Dir
возвращает
несколько строк, каждая из этих строк сохраняется в переменной как
новый элемент массива. Впоследствии можно получить доступ к любому
объекту файла, хранящемуся в этом созданном массиве. Дополнительные
сведения о массивах см. в разделе Массивы.
Следующая команда присваивает выходные данные команды
Dir
переменной $DirOutput
:
Копировать код | |
---|---|
$DirOutput = Dir |
Впоследствии можно выбрать конкретный объект файла, указав нужный индекс массива следующим образом:
Копировать код | |
---|---|
$DirOutput[1].Name |
Можно также создать простую циклическую процедуру, которая будет обрабатывать весь массив и отображать имя и размер каждого из хранящихся в массиве файлов следующим образом:
Копировать код | |
---|---|
0..$DirOutput.Length | ForEach { $DirOutput[$_].Name + " is " + $DirOutput[$_].Length + " bytes long." } |
В следующем списке изучается данный пример:
- Команда
0..$DirOutput.Length
указывает среде управления Exchange вывести целое число в диапазоне от0
до значения размера массива, хранящегося в переменной$DirOutput
.
- Выходные данные команды
0..$DirOutput.Length
передаются по конвейеру в командуForEach
, которая циклически обрабатывает элементы массива, пока не достигнет его конца. КомандаForEach
выполняет команды, заключенные в фигурные скобки{ }
.
- Переменная
$_
хранит текущий объект, который находится в конвейере. В данном случае объект в конвейере представляет собой целое число, полученное в результате выполнения командой0..$DirOutput.Length
счета от0
до максимального индекса массива. Эта переменная используется в команде$DirOutput[$_].Name
и команде$DirOutput[$_].Length
для выбора элемента массива, к которому нужно получить доступ.
- Дополнительные сведения о переменной
$
см. в разделе Переменные среды.
- Знаки плюса «
+
» используются для слияния выходных данных команды $DirOutput[$_].Name
и команды$DirOutput[$_].Length
, а также добавленных строк, в результате чего выходные данные имеют следующий вид:
Копировать код 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.
Эти примеры показывают, как можно использовать свойство
Length
несколько раз для вывода разных сведений об
одной переменной. Это доступно благодаря тому, что в переменной
$DirOutput
хранится несколько типов данных. Первый тип
данных — непосредственно объект каталога, второй тип данных —
объекты файлов. При выполнении команды
$DirObject.Length
без указания индекса массива
предоставляется доступ к типам родительских объектов каталога,
которые хранятся в массиве. Если задан индекс массива, например
$DirObject[5].Length
, предоставляется доступ к
дочерним объектам файлов, хранящимся в объекте каталога.
Такое поведение характерно для многих объектов. Как правило, можно получить доступ ко многим уровням данных объектов, которые содержатся в одной переменной. Возможность получать доступ к таким данным делает среду управления Exchange очень гибким инструментом.