: новая консольная программа, имеющая рабочее название Microsoft Scripting Host (MSH), и новый язык написания сценариев под названием Monad. Консольная программа выглядит как командная строка Windows, но на этом сходства между старой и новой оболочками заканчиваются. Компания Microsoft планирует включить язык Monad в состав системы Longhorn, но, возможно, он будет доступен и для нынешних версий Windows. Перечислим 10 характерных особенностей нового языка.

10. Имена команд отражают выполняемую ими задачу.

Хотя большинство профессионалов ИT-индустрии знакомы с командами оболочки создания сценариев, они вряд ли могут объяснить логическую основу схемы присвоения командам названий. Monad заменяет эту нелогичную схему новой, в которой команды имеют структуру «действие-объект». Например, следующая команда возвращает информацию о системных дисках:

MSH>get-drive

9. Арифметические выражения.

В отличие от старой оболочки, язык Monad обеспечивает полную поддержку арифметических операций. Кроме стандартных операторов, Monad поддерживает сокращения операторов, принятые в языке Cи. В качестве примера приведем следующее выражение:

MSH>$result = 2 + 2

8 Условные сравнения.

Язык Monad поддерживает множество условных индикаторов, в том числе «меньше», «меньше или равно», «больше», «больше или равно», «равно», «не равно», «эквивалентно» и «не эквивалентно» (соответственно выражения «-lt», «-le», «-gt», «-ge», «-eq», «-ne», «-like», «-notlike»). Следующая команда выводит слово Equal на стандартное устройство вывода, если результат выражения 2+2 равен 4:

MSH>If ((2+2) -eq 4) {write-host Equal}

7 Циклические конструкции.

Создатели сценариев будут рады появлению альтернативы удобной, но непонятной команде For. В состав циклических конструкций языка Monad также входят циклы While и Foreach. Приведенный ниже код использует команду While для вывода результата простого вычисления пять раз:

MSH>while($int -lt 5) {write-host $int; $int += 1)

6 Функции.

Поддержка языком Monad организации функций позволяет создавать «строительные блоки», содержащие последовательности кодовых структур. Следующая функция возвращает результат выражения 2+2:

Function myTwos { $result = 2 + 2 }

5 Видимость переменных.

Разграничение видимости переменных в языке Monad позволяет создать более надежный код. Границы видимости переменной задаются при их создании:

MSH>$local:mylocalint = 1

4 Динамическое выполнение команд.

Monad позволяет динамически создавать и выполнять команды. Можно поместить тело команды в переменную и далее работать уже с переменной, как показано в следующем примере.

MSH>$cmd = get-commands
MSH>$cmd

3 Перенаправление.

Язык Monad предоставляет полную поддержку перенаправления в файл. Чтобы вывести список системных служб в файл, необходимо набрать:

MSH>get-service >> outfile.txt

2 Передача объектов.

Вместо скромных средств передачи текста оболочка MSH предоставляет пользователю механизм передачи структурных объектов между командами, таким образом многократно расширяя возможности кода. Следующий пример осуществляет передачу результата команды Get-process в команду Sort:

MSH>get-process | sort CP

1 Объекты Cmdlet.

Самым заметным преимуществом языка Monad является то, что он позволяет разрабатывать собственные объекты cmdlet — управляемые объекты, которые создаются с помощью одного из языков Microsoft .NET. Объекты Cmdlet позволяют расширить встроенные функциональные возможности языка Monad. Пользователь обращается к расширяемому набору встроенных в язык Monad объектов cmdlet, применяя принцип «действие-объект». К примеру, можно использовать объект cmdlet для вывода списка остальных доступных объектов cmdlet:

MSH>get-command


Старший технический редактор Windows & .NET Magazine и президент компании TECA. С ним можно связаться по адресу: mikeo@teca.com