Применимо к: 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, предоставляется доступ к дочерним объектам файлов, хранящимся в объекте каталога.

Такое поведение характерно для многих объектов. Как правило, можно получить доступ ко многим уровням данных объектов, которые содержатся в одной переменной. Возможность получать доступ к таким данным делает командную консоль очень гибким инструментом.

Дополнительные сведения