Представляем Monad, новую командную строку MSH (Часть 2)

Автор: Topol Воскресенье, Апрель 22nd, 2012 Нет комментариев

Рубрика: Операционные системы

то вторая статья из цикла о Monad — новой командной строке от Microsoft. Первую можно найти по этой ссылке.
Команда переводчиков TheVista.ru приносит свои извинения за большой перерыв между выходом статей.

Так как наш обзор — это, с позволения сказать, лишь краткая экскурсия в обширный мир новых возможностей Monad, рассмотрим следующее глобальное изменение. Безусловно, это способность MSH работать с произвольными данными как с файловыми системами. Это реально благодаря provider model.

Доступ к реестру как к файловой системе.

Исторически так сложилось, что командные строки были жестко привязаны к файловой системе. Четкая иерархическая структура команд обеспечивала передвижение вниз, вверх и внутри уровней такой системы. Годы показали, что такой способ представления данных эффективен, даже не смотря на проблемы, которые он создает — например, сложность манипулирования данными, разбросанными по различным локациям внутри системы.

Конечно, не всегда было возможным рассматривать файловые системы как организованное дерево информации, хотя сегодня это и кажется абсолютно естественным. Но с наличием пережитков того времени — обилия различных стандартов хранения файлов (FAT, NTFS, CIFS, ISO9660) — помогают справиться современные операционные системы, которые берут всю черную работу на себя, оставляя конечному пользователю только легкость работы с организованной иерархией папок. MSH делает еще один шаг вперед — теперь в виде иерархического дерева будет так же представлен реестр и некоторые другие системы хранения данных ОС. Это должно существенно облегчить многие из ежедневных задач.

В MSH, служба provider формирует виртуальный слой информации, который виден в оболочке в качестве отдельного диска. Теперь, в дополнение к привычным A, C и D вы так же можете видеть диски переменных сред, настроек MSH, ярлыков всевозможных программ и частей реестра.

Давайте посмотрим на настройку программы через реестр на примере всеми любимого блокнота.

Но ведь я всегда считал, что реестр был шагом в сторону от файловых систем…
Служба Provider в MSH — отнюдь не шаг назад. Наоборот, представление хранилища данных в качестве обыкновенно диска дает нам возможность использовать один набор инструментов для управления широким кругом информации, хранящейся в разных местах.

Только представьте: теперь реально написать скрипт, который будет сканировать, находить и изменять по заданной маске не только файлы, но и, например, записи реестра, и для этого не понадобится вносить почти никаких изменений!

Ну и как мне сделать подобное?

Реестр разделен на 5 основных секций, известных как «ульи». Мы рассмотрим два из них, HKEY_LOCAL_MACHINE (часто название сокращается до HKLM), в котором хранятся системные настройки, единые для всех пользователей, и HKEY_CURRENT_USER (HKCU), в котором живут настройки конкретного пользователя.

При запуске, MSH создает два дополнительных виртуальных диска (hkcu: и hklm:), которые обозначают соотв. локации в реестре. Вы можете сразу начать их просматривать:

Код:
MSH D:MshScripts> cd hkcu:
MSH D:MshScripts> dir

SKC  VC ChildName                      Property

—  — ———                      ———

2   0 AppEvents                      {}

0  31 Console                        {ColorTable00, ColorTable01,

ColorTab…

23   1 Control Panel                  {Opened}

0   3 Environment                    {MSHCOMMANDPATH, TEMP, TMP}

1   6 Identities                     {Identity Ordinal, Migrated5, Last

Us…

2   0 Keyboard Layout                {}

0   0 Network                        {}

1   0 Printers                       {}

5   0 Software                       {}

0   0 UNICODE Program Groups         {}

0   1 SessionInformation             {ProgramCount}

0   7 Volatile Environment           {LOGONSERVER, CLIENTNAME, SESSIONNAME…

Нетрудно увидеть связь между этими данными и иерархией данных в программе regedit.exe (см. рисунок 1-1).


Рисунок 1-1. Regedit.exe

Блокнот хранит индивидуальные настройки пользователя в HKCU, в разделе SoftwareMicrosoft. Попробуем использовать cmdlet (см. первую статью цикла) get-property чтобы просмотреть содержимое раздела.

Код:
MSH D:MshScripts> cd hkcu:SoftwareMicrosoftNotepad

MSH D:MshScripts> get-property .

lfEscapement         : 0

lfOrientation        : 0

lfWeight             : 400

lfItalic             : 0

lfUnderline          : 0

lfStrikeOut          : 0

lfCharSet            : 0

lfOutPrecision       : 1

lfClipPrecision      : 2

lfQuality            : 2

lfPitchAndFamily     : 49

iPointSize           : 100

fWrap                : 0

StatusBar            : 0

fSaveWindowPositions : 0

lfFaceName           : Lucida Console

szHeader             : &f

szTrailer            : Page &p

iMarginTop           : 1000

iMarginBottom        : 1000

iMarginLeft          : 750

iMarginRight         : 750

fMLE_is_broken       : 0

iWindowPosX          : 88

iWindowPosY          : 88

iWindowPosDX         : 600

iWindowPosDY         : 411

Вернемся в regedit.exe и отметим, что полученный нами результат полностью идентичен по содержанию тому, что дает эта программа. Блокнот использует ключ IfFaceName для хранения используемого шрифта. Воспользуемся cmdlet set-property чтобы поменять это значение на Verdana:

Код:
MSH D:MshScripts> set-property . -property lfFaceName -value «Verdana»

Теперь при запуске Блокнот будет отображать текст именно этим шрифтом (см. рисунок 1-2).


Рисунок 1-2.

А как насчет…
…Использования такого подхода для настройки других приложений? Это зависит от того, в какой форме программа хранит настройки — XML-файл, INI-файл, реестр или иными способами.

На этом месте логичными будут вопросы «Но ведь есть же и другие средства для этого?» и «А как насчет Group Policy и SMS?». Действительно, платформа Windows предоставляет множество инструментов для управления приложениями, и MSH отнюдь не является их заменой, наоборот, новая командная строка как бы готовит плацдарм для более глубокой настройки индивидуальных программ, позволяя в короткие сроки исследовать систему. Group Policy и SMS незаменимы для выполнения автоматизированных задач в крупных сетях, тогда как MSH — средство повседневного администрирования.

Где я могу узнать больше?

Реестр Windows подробным образом описан на http://support.microsoft.com/default.aspx?scid=kb;EN-US;256986.

В следующей статье мы расскажем о создании «трубопровода» (pipeline) для передачи данных.

Источник: thevista.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты