Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

PowerShell: растяжение оболочки на примере Windows Shell Libraries

Anna | 24.06.2014 | нет комментариев

В данной планируемой статье из нескольких частей я попытаюсь рассказать о PowerShell и о том, как написать растяжение для этой оболочки. Мы применим несколько спецтехнологий:

  • припомним, что большая часть Windows API реализована COM-объектами;
  • припомним про C /CLI, тот, что поможет нам связать unmanaged- и manager-миры;
  • и наконец напишем растяжение (.NET Framework 4.5, C#).

И начну я с небольшого вступления, прочитав которое, вы сумеете осознать, о чём всё-таки идёт речь, если вы внезапно что-то запамятовали.

Вступление

Когда-то Microsoft приступила к разработке новой командной оболочки, которая должна была заменитьcmd.exe — оболочку, вероятности которой, мягко говоря, никогда особенно не впечатляли. Так появлилсяPowerShell. Теперь на дворе 2013-й год, и у нас есть теснее 4-я версия не очередного интерпретатора командной строки, но дюже сильного, расширяемого средства автоматизации и администрирования.

Shell Libraries?

Windows 7 среди прочего привнёс в систему нововведение — библиотеки. По плану разработчиков они обязаны были стать основным хранилищем пользовательских данных — документов, музыки, картинок, видео. Сами по себе библиотеки не хранят никаких файлов. Взамен этого они в одном месте показывают файлы, которые физически находятся в различных местах. Скажем, если часть музыки хранится в папке My Music, а часть — на внешнем жёстком диске, через библиотеку «Музыка» дозволено просмотреть всю коллекцию целиком.

На вкус и цвет все фломастеры различные, следственно оставим в стороне вопросы комфорта и популярности этих спецтехнологий (думаю, немалое число людей по тем либо другим причинам игнорируют их присутствие). Для нас основное, что они есть.

Постановка задачи

Мы заглянем вовнутрь PowerShell, посмотрим, как он устроен, и на примере библиотек напишем малое растяжение.

Отчего библиотеки?

Во-первых, один из наилучших методов обучиться чему-то — как вестимо, обучить этому иного. У меня давным-давно на слуху каждые Shell Extensions, COM-составляющая Windows и пр., сейчас пришла пора возвести пару велосипедов и упорядочить познания.

Во-вторых, то, каким образом мы видим библиотеки и взаимодействуем с ними (а основное средство взаимодействия — это Проводник), слаженным и явственным образом переносится на доктрины PowerShell. Чуть позднее мы увидим это.

В-третьих, комфортных средств работы с библиотеками из командной строки нет. Либо, по крайней мере, я нехорошо искал и не нашёл. То есть, безусловно, есть утилиты, скажем, в тех же Shell SDK Samples: дозволено создавать библиотеки, переименовывать их, удалять, но самого основного они не умеют. Я хочупросматривать библиотеки и трудиться с файлами в них так же прозрачно как и в Проводнике. Я хочу делать вот так:

cd Libraries:Documents

Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. All rights reserved.

C:WindowsSystem32WindowsPowerShellv1.0$ cd Libraries:Documents
Libraries:Documents$ ls

    Directory: Libraries:Documents

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        07.10.2013     17:51            Bootstrap
d----        14.08.2013     19:42            Custom Office Templates
d----        30.08.2013     12:36            OpenTTD
d----        24.09.2013     11:58            Outlook Files
d----        08.10.2013     18:28            vfw4
d----        29.04.2013     13:59            Visual Studio 2008
d----        05.08.2013     18:05            Visual Studio 2010
d----        09.10.2013     16:48            Visual Studio 2012
d----        11.10.2013     13:27            Visual Studio 2013
d----        17.10.2013     18:40            WindowsPowerShell
-a---        18.10.2013     16:29          0 1.txt
-a---        18.10.2013     16:29          0 10.txt
-a---        18.10.2013     16:29          0 2.txt
-a---        28.06.2013     16:54      18480 wix.png

Libraries:Documents$ new-item 3.txt -type file

    Directory: Libraries:Documents

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        18.10.2013     19:32          0 3.txt

Видите? Мы как словно бы находимся в традиционной папке. cmd.exe так не может.

В-четвёртых, легко так.

Лирическое отхождение

Значимо понимать, что вероятности растяжения PowerShell в большбудет увлекательна, я безусловно же продолжу, работы непочатый край.

Исходники предоставлю по первой просьбе.

Спасибо за внимание. Верю увидеться в комментариях.

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

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB