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

Могучий шелл

Naked Snake

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


Ты еще раз убедился, что скрипт написан полностью с использованием cmdlets. Этот код с вызовом функции Get-WmiObject я привел не просто так. WMI — это Windows Management Instrumentation, то есть программный интерфейс управления системой. С помощью WMI возможно управлять операционкой и получать информацию о системе. Например, ты легко можешь получить настройки БИОСа:

gwmi win32_BIOS

SMBIOSBIOSVersion : ASUS A7N8X2.0 ACPI BIOS Rev 10

Manufacturer : Phoenix Technologies, LTD

Name : Phoenix - AwardBIOS v6.00PG

SerialNumber : xxxxxxxxxxx

Version : Nvidia - 42302e31

Маленькое пояснение: gwmi — это короткий псевдоним все той же Get-WmiObject. Штука поистине уникальная: с ее помощью можно узнать о всех девайсах, присоединенных к твоему компу (принтеры, сканеры), сетевых настройках, легко управлять софтом, установленном на машине (так же как в меню «Установка и удаление программ») и многое другое. Смотри, как вывести свободное место на своих дисках:

get-wmiobject Win32_LogicalDisk | select deviceid,freespace,size

deviceid freespace size

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

A:

C: 6861377536 27135164416

D: 1317060608 18867748864

Для этого в качестве параметра для Get-WmiObject мы передали флаг Win32_LogicalDisk и таким образом получили полную статистику по дискам с нужными нам полями. Набери в консоли «Get-WmiObject –list» — и ты подивишься разнообразию объектов, о которых собрана информация. Но едва ли среди этого огромного списка найдешь то, что тебе действительно нужно. Но тут есть простой рецепт — набери в консоли:

get-WMIObject -list | where {$_ -match "что тебя интересует"}

Конструкция, указанная после пайпа (|), — это что-то вроде аналога grep в юниксе. То есть она фильтрует строки по содержимому, и после ввода этой команды ты получишь только те строки, в которых содержится интересующая тебя последовательность символов.

Необычные провайдеры

Перейдем к еще одной новаторской фиче — PowerShell. Ребята из Microsoft подумали и решили максимально упростить работу пользователя с различными структурами: файловой системой, реестром, множеством переменных. Для всех них определены несколько общих методов, позволяющих легко манипулировать данными. Вот пример. Допустим, мы выбрали в качестве структуры (в плоскости PowerShell — провайдера) файловую систему и совершенно обычным образом перемещаемся между папками и дисками с помощью команды cd. Зашли в диск C:\ и просмотрели содержимое с помощью ls. А теперь выберем в качестве структуры реестр. По большому счету, он очень схож с файловой системой: разделы или ветки — это папки, а ключи реестра – это файлы. Так почему бы не перемещаться по ним аналогичным образом? Провайдером по умолчанию, что логично, установлена файловая система (FileSystem). Чтобы сменить провайдера, необходимо использовать команду Set-Location. Список всех доступных вариантов выдаст команда Get-PSProvider:

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