Применимо к: Exchange Server 2010 SP1
Последнее изменение раздела: 2009-02-27
Переменная является ячейкой хранения данных. В отличие от многих сред программирования, для командной консоли Exchange не требуется объявлять переменную перед ее использованием.
Чтобы обозначить переменную, добавьте перед строкой знак доллара
($
). Необходимо заключить строку в фигурные скобки
({ }
), если она содержит пробелы или другие
специальные знаки. Используя обозначения ссылок на массив через
индексы ([ ]
), можно обращаться к элементам переменной
массива или хэш-таблицы. Дополнительные сведения см. в разделе
Массивы.
Дополнительные сведения о пользовательских переменных в командной консоли см. в следующих разделах:
Использование переменных для хранения значений
Хранение в переменной выходных данных команды
Хранение в переменной выходных данных команды Dir
Использование переменных для хранения значений
Переменные очень полезны, если нужно сохранить значение. Значения присваиваются переменным с использованием оператора присваивания. Дополнительные сведения об операторах см. в разделе Синтаксис.
Например, чтобы присвоить значение 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 -MemberType Property
в
списке возвращаются следующие свойства:
Скопировать код | |
---|---|
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;} |
Впоследствии можно вызвать любое из этих свойств, введя
переменную, точку (.
), а затем свойство, которое нужно
просмотреть. Например, чтобы просмотреть хранящийся в переменной
год, воспользуйтесь следующей командой:
Скопировать код | |
---|---|
$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
дает указание командной консоли вывести целое число в диапазоне от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
, предоставляется доступ к
дочерним объектам файлов, хранящимся в объекте каталога.
Такое поведение характерно для многих объектов. Как правило, можно получить доступ ко многим уровням данных объектов, которые содержатся в одной переменной. Возможность получать доступ к таким данным делает командную консоль очень гибким инструментом.