>
 
Что такое Windows PowerShell ? – Коротко о главном
3-09-2012, 02:12 Категория: Windows 7 / Администрирование / Просмотров: 2 213

Порой сталкиваешься с тем, что человек, желающий поведать тебе что-то из области, в которой ты только начинаешь осваиваться, сначала рассказываетпрописные истины, а потом ты вдруг перестаёшь понимать, о чём идёт разговор. Другая крайность – это когда в тебя кидают толстенной книгой или ссылкой на документацию или SDK. Его, кстати, можно посмотреть и почитать вот здесь, всё, как всегда, на английском языке.

Ещё можно почитать статью How Windows PowerShell Works. Так что же представляет собой PowerShell? Попробуем ответить на этот вопрос, но пока не будем влезать в дебри.

О PowerShell уже говорят

Конечно, если бы нам довелось побывать на WinHEC2004 (Windows hardware project congress), то, наверное, мы смогли бы прослушать доклад генерального архитектора проекта - Jeffrey P. Snover: «Monad Shell – Task-Oriented Automation Framework». Он рассказывает о детстве и юности PowerShell (его можно скачать отсюда). Ещё существует презентация К. Беляева, члена самарского сообщества .NET-разработчиков. Материалы и сама презентация доступны по этой ссылке.

«Компьютерра» тоже не осталась в стороне, напечатав статью «Современная монадология». Ну а если посмотреть на Google Trends, то мы увидим, что Windows PowerShell ещё очень молод.

Сам PowerShell можно представить в виде двух больших частей: консольная программа, имеющая рабочее название Microsoft Scripting Host (MSH), и язык написания сценариев под кодовым названием Monad. Консольная программа выглядит, как командная строка Windows, – но на этом сходства между старыми(command.com и cmd.exe) оболочками и новой заканчиваются.

Идеология Microsoft Windows PowerShell

Результатом работы консольных приложений всегда была текстовая информация. Теперь результатом работы команды или приложения является объект(данные вместе со свойствами и методами). Все остальное построено именно на этом посыле. Поэтому можно делать, например, вот так:

PS C:\> $a=”abcdef”
PS C:\> $a
abcdef
PS C:\> $a | get-member

TypeName: System.String

Name MemberType Definition
—- ———- ———-
Clone Method System.Object Clone()
CopyTo Method System.Void CopyTo(Int32 sou…

TrimStart Method System.String TrimStart(Para…
Chars ParameterizedProperty System.Char Chars(Int32 inde…
Length Property System.Int32 Length {get;}…

PS C:\> $a.Length
6
PS C:\>

Основные идеи PowerShell:

  • командная строка как основной интерфейс администрирования;
  • концепция ObjectFlow (элементом обмена информацией является объект);
  • переработка существующих команд, утилит и оболочки командной строки;
  • интеграция командной строки, COM- и .NET-объектов;
  • работа с произвольными источниками данных в командной строке по принципу файловой системы.

Поэтому всё представлено в виде объектов. Всё с чем мы имеем дело – это объекты.

Имена команд отражают выполняемую ими задачу. Мы все знаем десяток, а то и больше различных команд (md, cd, format c:), однако порой приходится сверяться со справочной системой, да и порой названия не совсем очевидные. Ну а если эту команду используешь пару раз в жизни, то запомнить её нет никакой возможности.

PowerShell заменяет старую концепцию именования команд по типу выполняемых ими действий на новую, в которой команды имеют вид «действие-объект» (если на английском, то «Verb-Noun»). Глагол описывает действие (напр. get или set), а существительное - его цель (process или location). Стандартный набор глаголов перекрывает большинство задач (get, set, add, remove). Например, следующая команда возвращает информацию о системном времени:

PS C:\> get-date
9 октября 2006 г. 16:53:30

Pipeline

Этот механизм передачи данных между различными модулями уже давно стал частью многих программных систем. Pipeline в PowerShell пригоден не только для передачи данных в виде текстовых файлов, как было раньше, а и в виде структурированных .NET-объектов. Так называемые Strong Type Objects – это объекты, в которых сохраняются не только сами данные, но и структура, в которую они организованы.

Подобный подход обладает рядом преимуществ. Например, при сохранении структуры данных отпадает необходимость писать отдельные скрипты, осуществляющие как упаковку данных на стороне отправителя, так и распаковку данных на стороне получателя.

PowerShell поддерживает возможность перенаправления данных, возвращенных процессом, следующему приложению или в указанный пользователем файл. Для задания следующего обрабатывающего приложения используется символ “|”. Встретив такой символ, командная строка передаст выходные данные одной команды в другую, но уже в качестве входных параметров. Таким образом можно выстроить цепь команд.

Cmdlet – один из столпов Monad

CMDLets (произносится как “command-lets”) – это утилиты, предназначенные для выполнения часто используемых заданий. Они являются одной из основ функциональности MSH. CMDLet представляет собой мини-программы внутри MSH, каждая из которых отвечает за определенную функцию командной строки. Они являются управляемыми объектами, которые создаются с помощью одного из языков Microsoft .NET. Удобство состоит в том, что мы можем разрабатывать собственные или скачивать написанные сторонними производителями CMDLets для расширения необходимой нам функциональности.

Provider model – навигация по иерархическим структурам данных

Основная идея состоит в том, что MSH может работать с иерархически представленными данными, как с файловой системой. Теперь в виде иерархического дерева будут также представлены реестр, Active Directory, хранилища сертификатов цифровых подписей и некоторые другие системы хранения данных ОС. Это должно существенно облегчить многие из ежедневных задач.

В PowerShell есть набор стандартных провайдеров:

  • Alias – Псевдонимы Windows PowerShell;
  • Certificate – Сертификаты X509 для цифровых подписей;
  • Environment – Переменные среды Windows;
  • FileSystem – Диски файловой системы, каталоги и файлы;
  • Function – Функции Windows PowerShell;
  • Registry – Реестр Windows;
  • Variable – Переменные Windows PowerShell.

Алиасы или псевдонимы (Aliases)

Как понятно из названия, псевдоним представляет собой альтернативное имя CMDLet’ а или элемента команды – например, функции, сценария, файла или исполняемого файла.

Поскольку поначалу названия команд немного сбивают с толку, то разработчики для облегчения миграции включили ряд псевдонимов, которые позволяют пользователям Unix и Cmd использовать в Windows PowerShell знакомые им имена команд. Посмотреть доступные псевдонимы можно командой get-alias

Windows(R) PowerShell
Copyright (C) 2006 Microsoft Corporation. All rights reserved.
PS C:\> get-alias
CommandType Name Definition
———– —- ———-
Alias ac Add-Content
Alias asnp Add-PSSnapin
Alias clc Clear-Content
Alias cli Clear-Item

Вот пока и всё. Совсем недавно наткнулся на живую ветку в одном из форумов в Ru-зоне, посвященную сами понимаете чему.

 

Добавить коммент
КОММЕНТАРИИ
  • smilelaughing
    wink
    angry

Вопрос:

2 + _ = 23 ( допишите недостающие число )

Ответ: