Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #91, ИЮЛЬ 2006 г.

Могучий шелл

Naked Snake

Хакер, номер #091, стр. 091-040-2


PS C:\Documents and Settings\si> "test"

test

PS C:\Documents and Settings\si> 5+3*2

11

Проще говоря, PowerShell работает с данными, которые вводятся в командную строку с переменными. Ими даже можно манипулировать с помощью разных методов. Смотри, к примеру, на результат метода split:

PS D:\Documents and Settings\snake> "shut up mazafaka".split(" ");

shut

up

mazafaka

Строка разбилась на части по пробелу. Попробуй метод substring(int Indexstart) - выведется часть строчки, начиная с indexstart.

Впрочем, любые команды и запуск исполняемых файлов осуществляется как есть — главное не писать их в кавычках. Очень просто объявляются и переменные. Для этого используется стандартный оператор присвоения — «=». Зададим, например, массив и хэш значений:

PS C:\Documents and Settings\si> $massiv=@(1,2,3,4,5)

PS C:\Documents and Settings\si> $hash=@{key0="value1"; key1="value2"; key2="value3"}

А теперь выведем второй элемент каждого из них (замечу, что нумерация индексов начинается с нуля):

PS C:\Documents and Settings\si> $massiv[1]

2

PS C:\Documents and Settings\si> $hash["key1"]

value1

Теперь поговорим о другом важном отличие PowerShell. В никсах каждая утилита имеет разное количество аргументов и парсит переданные ей данные по-своему, то же самое касается и вывода данных. В msh команды называются Command lets (сокращенно — cmdlet'ами) и наследуются от одного базового класса. Отсюда все вытекающие последствия: данные они парсят одинаково, обладают схожими методами и на выходе подают данные в специально структурированном виде. Все командлеты — это наименьший модуль функциональности системы, своеобразный аналог встроенных команд в других оболочках. Cmdlet обозначается парой «глагол-оболочка», поэтому всегда имеет очень простое и запоминающиеся имя. Например, список запущенных процессов и информации о них можно получить, набрав в консоли команду Get-Process:

PS C:\Documents and Settings\si> Get-Process

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName

------- ------ ----- ----- ----- ------ -- -----------

105 5 1216 3580 32 0,06 2940 alg

16 1 1388 1152 13 0,02 1284 cmd

581 7 1852 5256 28 60,72 896 csrss

[..]

По умолчанию в поставке поверх шелла идет примерно 130 встроенных cmdlet’ов. Их список можно получить с помощью командлета get-commands, а справку по каждому из них — с помощью get-help <название_командлета>.

Назад на стр. 091-040-1  Содержание  Вперед на стр. 091-040-3