03.04.2014 Views

Май - Xakep Online

Май - Xakep Online

Май - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ХАКЕР.PRO<br />

Активные соединения — netstat Операторы сравнения<br />

Management.Automation.msh_profile.msh;<br />

•$HOME\My Documents\msh\profile.msh;<br />

•$HOME\My Documents\msh\Microsoft.<br />

Management.Automation.msh_profile.msh.<br />

Сценарий — это обычный текстовый файл, содержащий<br />

команды PowerShell. Расширение у файла<br />

сценария должно быть msh. Синтаксис PowerShell<br />

похож на синтаксис любого другого языка высокого<br />

уровня. Рассмотрим несколько примеров:<br />

MSH> 5*5<br />

25<br />

MSH> "Конкатенация" + "строк"<br />

Конкатенация строк<br />

MSH> (Get-Date).year * 5<br />

10035<br />

Можно работать с переменными, причем поддерживаются<br />

массивы:<br />

MSH> $t = 10<br />

MSH> $t<br />

10<br />

MSH> $arr = 1,2<br />

MSH> $arr<br />

1<br />

2<br />

MSH> $arr[1] = 3<br />

MSH> $arr<br />

3<br />

2<br />

Перед именем переменной нужно обязательно<br />

указывать знак доллара — так PowerShell поймет,<br />

что перед ним переменная, а не значение.<br />

Нумерация элементов массива начинается<br />

с единицы. Для доступа к элементу массива<br />

используются квадратные скобки, для добавления<br />

нового элемента в массив — оператор «+»:<br />

MSH> $arr += 7<br />

MSH> $arr<br />

3<br />

2<br />

7<br />

Кроме простых массивов, поддерживаются<br />

ассоциативные массивы:<br />

MSH> $assoc = @{ one = 1; two = 2;<br />

three = 3}<br />

MSH> $assoc['one']<br />

1<br />

Для добавления элемента в ассоциативный<br />

массив используется вот такая конструкция:<br />

$assoc += @{ four = 4 }<br />

Тип переменной выбирается автоматически, но<br />

можно установить любой тип .NET: array, bool,<br />

byte, char, char[], decimal, double, float, int, int[],<br />

long, long[], regex, single, scriptblock, string, type,<br />

xml. Он определяется в квадратных скобках в<br />

момент присваивания:<br />

MSH> $var = [int]10;<br />

В сценариях можно использовать условные операторы<br />

if-elseif-else, switch, а также операторы<br />

циклов while, do-while, do-until, foreach.<br />

Мы рассмотрим только оператор if-elseif-else и<br />

циклы while и foreach. Конструкция if-elseif-else<br />

следующая:<br />

if (условие) {операторы<br />

} elseif (условие) {операторы<br />

...<br />

} elseif (условие) {операторы<br />

} else {операторы}<br />

Условие задается так:<br />

переменная оператор_сравнения переменная_или_значение<br />

Цикл while выглядит так:<br />

while {условие} {операторы}<br />

Пример:<br />

$i = 0; while($i -lt 10) { $i; $i++ }<br />

Этот цикл выведет числа от 0 до 9.<br />

Теперь рассмотрим синтаксис foreach:<br />

foreach (переменная in ассоциативный_массив)<br />

{операторы}<br />

Цикл foreach удобно использовать для перебора<br />

значений ассоциативного массива, например:<br />

foreach ($v in Get-Process |Sort-<br />

Object Name) { $v.Name }<br />

А сейчас поговорим о работе с реестром.<br />

Перейти в нужный раздел можно с помощью<br />

всем знакомой команды cd:<br />

MSH> cd hkcu:<br />

Мы попали в раздел HKEY_CURRENT_USER.<br />

Можно перейти в другой раздел, например<br />

HKEY_LOCAL_MACHINE, задав его имя или<br />

сокращение (hklm). Вывести содержимое<br />

раздела можно с помощью команды dir. Чтобы<br />

просмотреть его, используется команда<br />

get-property:<br />

MSH> cd hkcu:<br />

SoftwareMicrosoftNotepad<br />

MSH> get-property .<br />

В данном случае мы выводим настройки блокнота.<br />

Значение переменной в разделе устанавливается<br />

посредством set-property (следующая<br />

команда изменит шрифт блокнота):<br />

MSH> set-property . — property<br />

lfFaceName -value "Arial" z<br />

Команды для работы с файловой<br />

системой<br />

type — просмотр файла;<br />

more — постраничный вывод файла;<br />

copy — копирование одного или нескольких<br />

файлов;<br />

move — перемещение одного или нескольких<br />

файлов (или переименование каталога);<br />

del — удаление одного или нескольких<br />

файлов;<br />

ren — переименование файла;<br />

attrib — изменение атрибутов файла/каталога<br />

(скрытый, системный, только чтение,<br />

архивный);<br />

fc — сравнение файлов;<br />

find — поиск текстовой строки в одном или<br />

нескольких файлах;<br />

grep — поиск текстовой строки (можно использовать<br />

регулярные выражения) в файле<br />

или в списке файлов;<br />

cd — смена каталога;<br />

dir — вывод содержимого каталога;<br />

tree — вывод дерева каталогов;<br />

md (или mkdir) — создание каталога;<br />

rd — удаление каталога или дерева<br />

каталогов.<br />

xàêåð 05 /101/ 07<br />

/<br />

157

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!