Выбираем среду разработки на PowerShell и пишем скрипты для Windows
Содержание статьи
В администрировании всегда есть место творчеству. Хочешь сделать какую-нибудь автоматизацию рутинной задачи? Пожалуйста! Нужно что-то регулярно проверять на активность? Не вопрос! Хочешь обработать какой-нибудь гигантский отчет и вывести только актуальные данные? Тоже можно. Все эти и многие другие задачи лучше всего решать при помощи скриптов, и язык PowerShell в случае с Windows — оптимальный выбор.
Что такое PowerShell и чем он хорош
Пользователи UNIX и Linux, а с какого-то момента и macOS привыкли к тому, что под рукой всегда есть Bash — немного старомодное, но универсальное и мощное средство, при помощи которого всего парой строк можно творить удивительные вещи. Прописываешь новый скрипт в cron — и готово, он уже крутится на твоем компьютере или на сервере и незаметно делает что-нибудь полезное.
В общем, «пошик» имеет крепкие связи с продуктами Microsoft, будь то Active Directory или почтовый сервер Exchange. Это позволяет без подключения к оснастке сервера обращаться к ним через консоль и отдавать команды.
Если раньше ты не интересовался PowerShell, то, скорее всего, у тебя стоит вторая версия. Я рекомендую обновиться как минимум до третьей — она содержит куда больше возможностей и полезных фишек. Если не вдаваться в подробности, то в PowerShell 2.0 входит около десятка модулей и примерно 350 команд, а в PowerShell 3.0 уже около 2300 командлетов из более чем 70 модулей. «Хакер» также писал о том, чем отличается самый новый PowerShell пятой версии из Windows 10.
Выбираем среду разработки и инструменты
Теперь давай разберемся, где удобнее всего писать код. Можно, конечно, и в «Блокноте», Notepad++ или Sublime. Но это в данном случае не самый грамотный выбор редактора. Лучше всего начинать знакомство с PowerShell, вооружившись идущим в комплекте PowerShell ISE.
Xakep #214. Приручаем WAF’ы
Это даже не редактор, а практически полноценная среда разработки. Здесь есть функция IntelliSense, которая позволяет просматривать перечень командлетов и их параметров, переменных, утилит и прочего. Поддерживаются сниппеты, есть возможность расширения набора функций за счет различных аддонов. Очень полезно и окно Commands. В нем можно составлять команды в визуальном режиме: выбираешь модуль, находишь нужный командлет и задаешь ему необходимые параметры. Получившуюся команду можно скопировать в консоль или сразу запустить на выполнение. В общем, этакий конструктор для админа. Ну и конечно, есть подсветка синтаксиса, дебаггер и многое другое.
Тем не менее у PowerShell ISE есть и достойные конкуренты. Один из них — Dell PowerGUI.
PowerGUI — это визуальное дополнение к PowerShell. Оно упрощает сборку собственных сценариев до выбора необходимых командлетов. Берешь то, что нужно для решения задачи, и перетаскиваешь части кода, пока не получишь скрипт. Одна из главных фишек PowerGUI — это Power Packs, готовые скрипты, опубликованные сообществом пользователей и выложенные в свободный доступ. Тут есть и простенькие команды вроде добавления пользователей, и сложные — к примеру, управление свитчами и виртуальными машинами. Все их легко дополнять и модифицировать в соответствии с нуждами.
PowerShell Studio 2015 фирмы Sapien — более продвинутая среда, которая рассчитана на совместную разработку одного проекта большим количеством участников. Если ты когда-нибудь имел дело с Visual Studio, то, думаю, заметишь сходство. Среди полезных фишек PowerShell Studio — панель Ribbon, поддержка удаленной отладки, а также функции компилятора, которые позволяют включить скрипты в исполняемые файлы. Есть поддержка разных версий PowerShell.

Стоит упомянуть и Script Browser для Windows PowerShell ISE. Это не среда разработки, но весьма интересный инструмент, разработанный в Microsoft. Script Browser открывает доступ к базе готовых скриптов, которые можно использовать в качестве образцов для написания своего кода. А еще эта штука умеет анализировать код, который ты пишешь, и подсказывает, как его улучшить.

Несколько полезных трюков
Разобравшись с редактором, можно приступать к написанию кода. PowerShell — несложный язык, и, я думаю, ты быстро разберешься, что к чему. Команды здесь называются командлетами, и каждый из них состоит из двух частей. Сначала идет действие, например Get, Set, Add, Invoke, Remove. Затем указывается то, на что действие направлено: Service, VM, AzureAccount, DHCPServerSetting. Каждая часть отделяется от другой дефисом. Получается, к примеру, get-process. Это, кстати, полезная команда, которая выводит список процессов. Скажем, если написать
увидим что-то такое:
Теперь можно завершить зависший процесс:
Хочешь посмотреть права на директорию? Сделать это помогает такой командлет:
Можно просмотреть рекурсивно, правда уже чуть с более сложной логикой:
Если не можешь понять, что делает какой-то командлет, напиши следующее (заменив Get-Process на название неизвестного командлета):
Можно также выполнить
В этом случае будет выведен весь список возможных вариантов.
Теперь давай попробуем узнать что-нибудь о нашем домене через консоль PowerShell. К примеру, давай посмотрим пользовательские аккаунты, у которых установлен неистекающий пароль:
Кстати, к каждому полю в окошке опции учетной записи или компьютера можно обратиться и считать данные. Таким образом можно делать целые срезы. Вот, к примеру, запрос на основе данных о телефонных номерах:
PowerShell в сравнении с bat
Иногда задачу можно решить как старым дедовским методом, так и при помощи PowerShell. Я рекомендую не лениться и использовать PS, хотя бы просто потому, что так ты его быстрее изучишь и сможешь применять в более сложных ситуациях. К тому же ты постепенно оценишь его синтаксис — более элегантный и консистентный. Вот несколько примеров, как вещи делались раньше и как их можно сделать при помощи PowerShell.
Следующая командная строка перезагрузит компьютер с задержкой в десять секунд:
На PowerShell это будет выглядеть вот так:
Вот так через bat можно перезагрузить службу dnscache (или любую другую):
В PowerShell это будет так:
Да, иногда приходится печатать чуть больше букв, но читаются команды PS гораздо лучше. И это не говоря уже про разные новые возможности.
Удаленное управление с PowerShell
В основном описанные в статье команды выполняются на том же компьютере, на котором они запущены. Проще говоря, команды для управления AD выполнять нужно на сервере, где контроллер домена и установлен, что, согласись, на корню рубит удобство и автоматизацию. Для выполнения команд удаленно, что нам и требуется, надо пользоваться специальными командлетами. К примеру, для подключения к удаленному компьютеру и перезапуску там спулера печати вводи
Что почитать еще
Книжек и прочих обучающих материалов по PowerShell огромное количество. Есть как справочники, так и учебные туториалы. Начать можно с сайта Microsoft, где есть неплохие видеоуроки.
В деле немало поможет и книга «Master-PowerShell» Тобиаса Велтнера. В ней автор охватывает многие понятия вроде массивов, хеш-таблиц, конвейеров, объектов, функций, обработки ошибок, регулярных выражений и так далее. Заодно подробно рассматривается XML и разные аспекты администрирования. Увы, на русский эта книга не переведена.
Из русскоязычных мануалов по PowerShell мне попадался «Windows PowerShell 2.0. Справочник администратора» Уильяма Станека — он весьма неплох.
На «Хабрахабре» есть перевод полезной статьи Джеффери Хикса об администрировании Active Directory при помощи PowerShell.
Итого
Как видишь, все не так сложно, как кажется на первый взгляд. Главное — четко понимать, что нужно на выходе, и на этом основании выбирать командлеты. А с удобным редактором это делать куда легче. Доступность разнообразных заготовок может заметно упростить решение повседневных задач администрирования. Знания «пошика» прокачаешь по ходу дела, а это в работе с Windows совсем не лишнее.
Основы языка JScript — написание WSH скриптов
Сегодня поговорим об очень полезном компоненте операционной системы Windows — это Windows Script Host, если быть конкретней, то о языке Jscript, на котором можно писать эти самые WSH скрипты.
Начнем мы с небольшой теории, так как мы еще не затрагивали Windows Script Host.
Что такое Windows Script Host?
Windows Script Host – сервер выполнения сценариев (скриптов) на таких языках как VBScript и JScript. WSH разработан компанией Microsoft и он является компонентом операционной системы Windows начиная с Windows 98.
Первоначально для администрирования использовались только bat-файлы, но их возможности ограничены (хотя также очень полезны!), поэтому компания Microsoft предложила такой вариант WSH. Возможности WSH-скриптов уже гораздо больше, ведь данные скрипты уже создаются на полноценных языках, таких как VBScript и JScript.
Именно о JScript мы сегодня и поговорим.
Но о VBScript мы тоже скажем пару слов.
VBScript – это скриптовой язык программирования, созданный компанией Microsoft для разработки скриптов в операционной системе Windows. Другими словами, это один из языков, которые может интерпретировать Windows Script Host. И из названия ясно, что VBScript основан на языке Visual Basic, поэтому тем, кто знаком с Visual Basic будет просто писать WSH-скрипты на этом языке программирования.
JScript – скриптовой язык программирования, с помощью которого можно создавать (писать) скрипты, которые будут интерпретироваться компонентом Windows Script Host.
С первого взгляда JScript во многом похож на JavaScript (ECMAScript), это и естественно, так как синтаксис, некоторый объекты, методы, свойства аналогичны JavaScript. Но это все же не JavaScript, а именно JScript. JavaScript (ECMAScript) ориентирован на объекты браузера, а JScript уже на компоненты операционной системы Windows. Но как мы сказали, они похожи, поэтому те, кто владеют языком программирования JavaScript с легкостью перейдут на JScript.
Возможности Windows Script Host
А теперь давайте поговорим о том, зачем нам нужно писать эти самые WSH-скрипты, т.е. об их возможностях и преимуществах:
На JScript возможно даже реализация графического интерфейса через объект браузера (internet explorer), согласитесь это уже полноценная программа.
Примеры написания WSH скриптов
Перейдем к практике, так как у нас сегодня статья по основам, мы рассмотрим простые примеры написание скриптов на JScript.
Выводим сообщение на JScript
В WSH имеется специальный объект, на основе которого мы уже можем в дальнейшем создавать другие объекты, настраивать взаимодействие с программами, файлами и другими компонентами операционной системы.
Этим объектом является WScript. Пример его использования на Jscript:
Тем самым мы создали объект, с помощью которого мы можем получить доступ к компонентам Windows.
Например, вывести сообщение:
Работа с Excel на JScript
Теперь давайте создадим другой объект, например, Excel файл:
Как Вы понимаете, мы имеем доступ ко всем свойствам в Excel, другими словами, мы можем изменить внешний вид, задать формат ячеек и многое другое. Для примера давайте поэкспериментируем с некоторыми свойствами:
Работа с текстовым файлом и Excel на JScript
Я думаю с Excel все понятно, теперь давайте прочитаем какие-нибудь данные из текстового файла и запишем их в нашу Excel таблицу, для закрепления наших знаний.
Для того чтобы настроить взаимодействие с файловой системой, необходимо создать объект FileSystemObject, который работает с файлами и каталогами. Вот пример небольшого скрипта, который считывает данные из текстового файла построчно и записывает их в Excel документ, причем мы все строки пронумеруем и зададим ширину столба для данных в Excel:
Пример текстового файла:
Как всегда весь код я прокомментировал, поэтому неясностей возникнуть не должно.
Я думаю для начала этого вполне достаточно, в дальнейшем мы будем разбирать задачи посложней, ведь при помощи Jscript в WSH можно очень много чего сделать, гораздо больше, чем с помощью простых bat файлов. До встречи!
Программы для создания скриптов
Python — один из самых популярных в мире языков программирования, который поддерживает сценарий скриптов. Он легок в освоении, имеет быструю скорость выполнения кода, а также может стать один из главных языков для написания небольших скриптов. Из-за этого мы предлагаем сначала взять во внимание этот ЯП и его стандартную интегрированную среду разработки под названием IDLE. Данный инструмент не нужно загружать отдельно, поскольку его получение происходит вместе с основными компонентами Python при их скачивании с официального веб-ресурса. Хоть эта программа, как можно понять по представленному далее скриншоту, и не имеет особенностей внешнего вида или каких-то дополнительных элементов интерфейса, она отлично подойдет для того, чтобы писать небольшие скрипты. В ней подсвечивается синтаксис, есть продвинутая система отчета об ошибках, а компилирование кода можно запустить горячей клавишей, ознакомившись с результатом в новом окне.

PyCharm
PyCharm — продвинутая альтернатива предыдущему решению, созданная известной компанией под названием JetBrains. Разработчики постарались реализовать в своей программе те опции, которые пригодятся профессиональным разработчикам и окажут значимое влияние на комфортность взаимодействия с софтом. Самая главная из них, предназначенная для повышения удобства, — встроенный умный редактор. Как только вы начинаете набирать команду, редактор отображает возможные варианты автозаполнения, а вам остается лишь подтвердить его, нажав по клавише Enter. Это же позволяет исключить большинство опечаток или случайных ошибок еще до запуска компилирования, сэкономив тем самым время, которое могло быть затрачено на исправление в дальнейшем.
Присутствует в программе и удобная функция поиска по составляющим проекта. Это может быть файл, символ или конкретный фрагмент кода, перемещение к которому произойдет буквально в пару кликов. При написании скриптов такая возможность тоже окажется полезной, ведь иногда сценарий состоит из множества строчек кода. При первом же запуске PyCharm вам станет доступно огромное количество полезных функций для разработчиков без надобности установки дополнительных библиотек. К ним относятся: инструменты отладки, тестирования и профилирования, поддержка популярных баз данных (Oracle, SQL Server, PostgreSQL, MySQL и другие). Подходит PyCharm для выполнения любых задач на языке программирования Python, включая и веб-разработку, поскольку присутствует совместимость с HTML и JavaScript. Подводя итоги по рассмотренному софту, можно понять, что он станет отличным вариантом для постоянной работы тем юзерам, кто собирается использовать Python не только для написания скриптов, но и полноценной разработки или математических вычислений.
IntelliJ IDEA
Еще одно решение от тех же разработчиков, но уже ориентированное на работу с разными языками программирования. Из тех, которые поддерживают создание скриптов, можно отметить JavaScript, Python и Ruby, но если вы вдруг решите реализовать сложный сценарий на C++, никаких проблем с этим тоже быть не должно, однако не стоит забывать, что этот ЯП не совсем подходит для написания сценариев и лучше обратить внимание на другие методы выполнения задачи. В IntelliJ IDEA присутствует удобный инструмент компилирования, поддерживаются горячие клавиши, а найденные ошибки сразу же отображаются в консоли. Умный редактор, предлагающий дополнить вводимый код, функционирует немного иначе, чем в других средах разработки, поскольку в этом случае разработчики решили сделать алгоритм подстраиваемым под контекст, а не общие правила.
При частом выполнении конкретной операции или вызове команды, что будет актуально и для скриптов в IntelliJ IDEA, упомянутое средство заполнения предложит ее автоматизировать, чтобы больше не пришлось тратить на ввод лишние секунды. Это приложение не обошлось без недостатков, главный из которых связан со скоростью обработки кода при компилировании. Конечно, обычно скрипты состоят из небольшого количества строк, но часто они обращаются к другим программам или файлам, что при обработке может вызвать появление некоторых задержек. Создатели все еще работают над оптимизацией производительности, но пока неизвестно, когда она станет идеальной.
Eclipse
Eclipse — одна из самых известных сред разработки, которая приглянулась большому количеству девелоперов из-за простой интеграции со свободно подключаемыми модулями. Если говорить об изначальном предназначении данной программы, то разработчики акцентировали внимание на Java, однако сейчас, установив всего несколько дополнительных библиотек, вы можете свободно программировать на любом популярном языке, включая и скриптовые. Иногда создание скриптов подразумевает подключение плагинов или отдельных модулей, которые будут задействованы при обработке кода и вызове определенных команд. В таком случае Eclipse окажется как никогда кстати как раз из-за отличной совместимости с библиотеками.
Классические функции типа подсветки синтаксиса, отображения ошибок в консоли и автозаполнения, естественно, здесь присутствуют и работают по стандартным принципам. Никаких проблем и трудностей при использовании Eclipse только для написания небольших сценариев возникнуть не должно, однако надо учесть, что при тесном взаимодействии в профессиональных целях могут появиться проблемы из-за нехватки документации и нестабильных обновлений, поскольку этот софт открыт и разработку постоянно ведут разные люди.
Netbeans
Следующий софт, который подойдет для использования скриптовых ЯП, называется Netbeans. Это бесплатный инструмент, поддерживающий Java, JavaScript, Python, PHP, C, C++ и другие языки программирования. Соответственно, вы сами выбираете, какой скрипт хотите написать, а среда разработки не ставит никаких ограничений в этом плане. На официальном сайте можете ознакомиться с доступными подключаемыми плагинами: большинство из них предназначены для полноценной разработки, но некоторые окажутся полезными и при создании скриптов. Привычные опции, например, быстрое редактирование кода или отображение ошибок в режиме реального времени, тоже есть в рассматриваемом софте. Поддерживается Netbeans как на Windows, так и на Linux, поэтому каждому под силу оптимизировать скрипты для выполнения в конкретных операционных системах.
Наличие огромного количества встроенных и заранее подключенных библиотек не могло не сказаться на производительности. Медленный процесс обработки особенно будет заметен, когда обращение происходит к отдельным файлам или при компилировании скрипта вызывается работой одной из программ, установленных на компьютере. Однако при взаимодействии со сценариями это редко проявляется, поскольку, как уже было сказано выше, строчек кода здесь не так много и задержки не появляются. Предлагаем перейти по ссылке ниже, чтобы попасть на официальный сайт Netbeans и ознакомиться со всеми функциональными особенностями этого софта.
RubyMine
Ruby — один из самых часто используемых языков программирования для написания скриптов, поскольку он минималистичен и крайне прост в освоении теми пользователями, кто знаком с другими ЯП, но подбирает себе вариант именно для работы с небольшими сценариями. Компания JetBrains предоставляет независимую среду разработки для этого языка, которая называется RubyMine. Однако при должном подходе и правильном освоении самого софта его можно использовать, чтобы написать код на CSS, HTML, JavaScript, Rails и SASS, если это нужно будет для других целей в разработке.
Пропустим основные функции, поскольку вы уже много раз слышали о них, и лучше отметим, что в RubyMine встроены системы отладки, позволяющие быстро оптимизировать код, написанный на Ruby. Есть и интеграция с CVS, Git, Mercurial, Perforce и Subversion. При работе с большими проектами, состоящими из нескольких файлов, они будут группироваться в древовидном стиле, что сделает процесс анализа более комфортным. Обратите внимание, что для стабильной работы этой среды разработки понадобится не менее 4 гигабайт оперативной памяти, а сам софт распространяется на платной основе, но с доступной триальной версией сроком на 30 дней. Загрузите ее и попробуйте, чтобы сформировать решение о покупке.
Notepad++
Предлагаем затронуть тему и классических текстовых редакторов, которые могут использоваться для написания кодов и станут особенно полезными при создании небольших скриптов, и первый из них называется Notepad++. В нем есть подсветка синтаксиса, нумерация строк, функции поиска и преобразование кодировок. Дополнительно ничего не помешает подключить плагины, если стандартный набор инструментов вас не устраивает.
Notepad++ станет отличным выбором среди тех, кто не хочет инсталлировать сложные среды разработки и просто не нуждается в настолько широкой функциональности. Дополнительно уточним, что при желании в нем можно записать макросы, которые будут полезны при постоянном осуществлении одинаковых действий. Интерфейс полностью переведен на русский, поэтому проблем в понимании отдельных меню и настроек не будет. Порог вхождения в Notepad++ минимальный, что позволит обойтись без использования официальной документации.
Еще на нашем сайте вы можете найти полезную инструкцию по использованию рассматриваемого софта. Она будет полезна начинающим юзерам, кто только обучается написанию скриптов и ранее не сталкивался с выполнением поставленной задачи. Это же руководство позволит более детально узнать обо всех возможностях Notepad++ и понять, насколько эта программа подходит для постоянного взаимодействия.
SublimeText
SublimeText — самый распространенный текстовый редактор, свободно применяемый для написания кода, ведь он совместим со многими популярными языками программирования, подсвечивает синтаксис, а также имеет встроенную функцию автозаполнения, которая поможет сэкономить время при создании скрипта. Весь перечень поддерживаемых ЯП находится на официальном сайте данной программы, поэтому перед скачиванием рекомендуем с ним ознакомиться, убедившись в том, что это решение удовлетворит ваши потребности.
Отличается SublimeText от других продвинутых текстовых редакторов минималистичным и приятным интерфейсом, поддержкой вкладок, с которыми можно работать одновременно, даже если на каждой из них используются разные языки программирования. Еще стоит отметить высокую скорость работы, что важно при написании скриптов, и наличие консоли, где вы сразу можете ознакомиться с результатами выполнения кода и узнать, возникли ли во время обработки какие-либо ошибки.
Помимо этой статьи, на сайте еще 12489 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Первые шаги для пауэршельшиков
Приди ко мне брате в Консоль!
— Админ Долгорукий.
Много ярлыков улетело в корзину со времён выхода в свет 2008 Windows. Люди попроще дивились новому синему окошку, которое ребята из Майкрософт зачем-то вставили в свои новые продукты. Люди, которые сидят на блогах и знают программирование начали изучать это окошко.
В итоге к народу начало приходить осознание того, что Майкрософт действительно разработали что-то новое и интересное.
И так, зачем вам это нужно? В основном, программа под названием PowerShell (в дальнейшем PS) предназначена для администраторов и программистов. Она позволяет автоматизировать примерно 99% всех действий в системе. С помощью неё вы можете настраивать удалённые компьютеры, запускать и перезапускать сервисы и производить обслуживание большиства серверных приложений. Как выяснилось, возможности у программы потрясающие.
Конечно же, продвинутые пользователи найдут множество способов использования этого восхитительного синего окошка.
Задача этой статьи проста — показать вам малую долю возможностей PS и дать вам концептуальное понимание предмета. В действительности документации по предмету написано несметное количество, так что я не стремлюсь охватить всё. Я так же ознакомлю вас с набором утилит, которые позволят не вылезать из PS в принципе.
Что представляет собой PS? Это интерпретатор командной строки. Вы вводите необходимые команды, на экране отображается результат их выполнения. Всё просто. Всё было так со времён доса и старого доброго Юникса.
Есть два основных отличия от предшественников, которые качественно выделяют PS среди других интерпретаторов.
Приступая к работе
Если вы используете Windows 7 или 2008 то PS вам уже доступен. Для пользователей других версий Windows — добро пожаловать на сайт Майкрософт.
После установки вы можете запустить консоль и настроить её по своему вкусу, нажав на иконку в заголовке окна. Вы можете выбрать шрифт и изменить сам размер окна.
После этого, предпринимайте робкие шаги по выполнению первых команд. Для начала наберите
и вы получите список папок в текущем каталоге. Приятным моментом для любителей Юникса
будет тот факт, что команда
работает так же хорошо, как и dir. В PS существует система назначения алиасов на различные команды. В действительности, то что вы сейчас сделали — это выполнили командлет (так в PS называются команды, встроенные в сам PS) Get-ChildItem. Вы можете попробовать просто набрать Get-ChildItem и получить тот же результат, что и в двух предыдущих командах. Для того, чтобы вы быстро ознакомились со списком всех алиасов наберите
И так, что-то произошло. Вы начали кое-что понимать. Сейчас я буду раскладывать всю магию по кусочкам.
Первое. Командлеты в оригинальной нотации PS имеют следующую систему именования — Глагол-Объект. Это позволяет вам лучше понимать, что можно ожидать в результате выполнения того или иного командлета. Например,
Get-Process # Получить список процессов
Remove-Item # Удалить что-то
Get-Help # получить справку по чему-то
Set-Alias # Создать новый алиас
New-Item # Создать новый объект (Объектом может быть всё что угодно, например, файл)
Далее, в PS достаточно много очевидных вещей находится в непривычных для виндузятника местах. В частности, вы можете посмотреть, что за диски есть в вашей системе, набрав команду
И в ответ вы получаете намного более интересный список дисков в вашей системе, нежели тот, что вы видите в «Моём Компьютере»
На диске Alias вы можете увидеть список всех алиясов в системе. Виртуальный диск Variable: хранит в себе все переменные, которые вы можете использовать в данной сессии. На диске Env — лежат переменные операционной системы. Диски HKCU и HKLM являются обёрткой для работы с соответствующими ветками реестра.
Давайте углубимся. Набирайте
Ну и как вам новый и невероятный способ хождения по реестру всея машины? Вы можете сделать ls по ветке реестра или перейти в нужный «каталог», набрав cd SYSTEM.
(Кстати, даже из под администраторского аккаунта есть доступ не ко всем объектам, о чём мой шелл меня уведомляет красными буквами).
Не бойтесь использовать команды New-Item и Remove-Item чтобы создавать и удалять нужные вам ключи в реестре. (И по традиции, я напомню вам, что играться с ключами реестра в администраторском режиме опасно)
Ну, вот вам и небольшой экскурс вглубь. Конечно же, у вас не получится создать ключ реестра так просто. Что-то пойдёт не так, как надо. Ну что же, могу сказать, что PS — это система, которая поощряет обучение в этой системе. Поэтому
Обучение тому, как правильно чему-то научиться в PowerShell
Способность наблюдать и анализировать наблюдения отличает нормального человека от психа. Ребят в Майкрософт психами не назовёшь. Они действительно понаблюдали за пользователями других командных интерпретаторов и выяснили, какая команда чаще всего используется в интерпретаторах. И той командой был великий и могучий man. (Для незнающих — попробуйте сделать — гугл man или наберите в своём баше man man)
В PS есть аналогичная команда, которая звучит как
Насколько поразительно отвратительно ребята из Майкрософт делают документацию для пользовательских приложений, настолько хорошо они заботятся о программистах. (Неверующие могут сравнить справку системы Windows XP и 2003)
И так, выбирайте приглянувшийся вам командлет и отправляйте его в help. Если после прочтения общей справки вы ничего не поняли, то попробуйте набрать
В ответ на эту команду вы получите список топиков, которые содержат ключевое слово:
В нашем случая, для того, чтобы научиться работать с реестром, вы можете просто набрать
В ответ вы получите длиннющее полотно, которое со всеми подробностями расскажет вам о том, как вы можете работать с реестром в PS.
К сожалению, читабельность полотна обратно пропорциональна его длине. Так что, научившись учиться, давайте обучимся тому, как сделать работу в шелле немного проще.
Товарищ, смирись, ты — в командной строке. Тут безгуёво принципе. Но, если ты познаешь некоторые уловки, тебе здесь станет удобно.
И так, для тех, кто никогда не был в командной строке
Для тех, кто уже бывал в командных строках
Углубляемся в изучение окружения
Для того чтобы понять нижеследующие строки, нам надо будет разобраться с понятием конвейера.
Когда вы запускаете какой-либо командлет, то возвращаемые им значения преобразуются в текст и выводятся на экран. Но, это не всегда полезно. Например, если вы хотите передать возвращаемое значение одного командлета на вход другого. Для этого вам полезно будет использовать |, в народе именуемый конвейером.
Например, вы хотите отобразить на экране текст, который содержится во всех файлах формата bat в папке. Для того, чтобы выбрать файлы, выполняйте
И весь файл помощи по реестру сохранён в текстовом файле, который вы теперь можете открыть.
Если вы действительно хотите порадоваться жизни, и понять, что PS способен на многое, то вам придётся применить свой IQ на все 100% и вообразить что-то нереальное.
Выглядит невероятно, а результат даёт потрясающий! Если вы хотите узнать, из какого файла появился процесс, просто пустите его конвейером на get-childitem!
В частности, я сейчас набираю текст в вордпаде:
Вот это меня поразило до глубины души.
Теперь можно переходить к изучению окружения
Как я уже говорил, всё что вы видите на экране не является строками, а является объектами. Например, результат выполнения команды ps возвращает нам список процессов, запущенных в системе.
Но как узнать, что же у нас в руках?
Для этого мы воспользуемся командлетом Get-Member, который откроет нам методы любого класса. Давайте узнаем, что содержится в том же самом процессе, который выдаёт нам команда ps.
Набирайте, и смотрите на список членов класса, которые вы можете увидеть в классе System.Diagnostics.Process. Тоесть, фактически, командлет ps вернул нам массив объектов типа Process и мы можем попрограммировать их!
Давайте поглумимся над блокнотом.
Вот это неплохое количество методов, которые мы можем запустить, используя шелл. И так, как же это сделать? Просто.
Если вы возьмёте результат выполнения командлета в скобки, то вы сможете обратиться к нему, как к объекту в вашей программе, прямо из командной строки.
После запуска этого метода шелл завис и ждёт у моря погоды. Нажмите пару раз Enter. Ничего не происходит. Что же, закройте открытый блокнот. Вуаля, вы снова в шелле.
Я думаю, теперь вы должны погулять свою фантазию. Попробуйте, пустите через конвейер в get-member результаты выполнения ls или других командлетов, каких только можете найти.
Если вы увидели, что в свойстве какого-то объекта лежит ещё один объект, не стесняйтесь пускать его на Get-Member
И так далее до бесконечности.
Задача для пытливых умов. Пролетела новость, что рефлектор станет платным. Как сделать рефлектор на чистом PS? Кстати, это не такая уж и трудная задача.
Ну, вот, мы немного разобрались с тем, как узнать, что нас окружает. Теперь, мы готовы к тому, чтобы понять ещё парочку принципов, существующих в шелле.
Переменные и объекты
И так, пару слов по поводу переменных. В PS они бывают нетипизированными:
Что-же, переменную мы создали, а толку от неё — как с икспи сервака. Никакого. Давайте пофантазируем и подумаем, что мы действительно можем сделать?
А вот это уже другое дело. Только что мы из подручных средств собрали себе wget на коленке. Как вам такой поворот событий?
Что же, в этот момент можно идти в MSDN и подряд перебирать все классы, смотреть, что в них есть интересного. Всё это позволяет создавать очень гибкие скрипты.
Кстати, о скриптах
PS позволяет выполнять скрипты. Ура! Делает он это с волшебного пендаля. Неура. По умолчанию в PS запрещён запуск скриптов, которые не были подписаны цифровой подписью. Для запуска скрипта вы должны его либо подписать (для этого используйте help about_signing) либо, просто понизить уровень безопасности, и выполнить
обычно я делаю второе. Ибо первый вариант требует скачивания многотонных SDK и долгого колдовства. Хотя, напомню о безопасности, и скажу, что второй вариант не канает для супер-сервера-всея-руси.
После выполнения этих действий, вы будете готовы писать свой первый скрипт. Для начала, рекомендую создать для него файл:
(О, кстати, я вам не сказал, но в PS, на мой взгляд, лучше всего смотрится текстовый редактор vim. Возможно кто-то назовёт меня настоящим извращенцем, но на самом деле, я уже не раз пытался использовать что-то другое, но всегда возвращался к виму. Попробуйте и вы. Его не просто изучить с нуля, но если вы поймёте основы, то сможете очень быстро и удобно редактировать тексты.)
Ладно, теперь повторим эту команду без того, чтобы умничать:
Ну, вот, например, то, что лежит у меня в профиле
Так как мы используем прокси сервер, а вэб клиент является моим любимым инструментом для работы, то я уже заготовил для себя переменную с этим клиентом, чтобы иметь возможность безболезненно подключаться к интернету и не отягощать себя вводом пароля.
Что ещё можно запихнуть в профиль?
Всё что угодно. Настройки цвета окна, ваши любимые функции и алиасы. Алиасы на ваши излюбленные программы и скрипты автоматизации…
На самом деле, я уже написал достаточно много. Вы увидели для себя кое-что новое. Я прекрасно знаю, что уровень этой статьи — для начинающих, но и продвинутые админы найдут для себя несколько интересных моментов. Моей задачей было предоставить вам возможность получить общее представление о том, что вы можете сделать.
Что же, вот, напоследок, вам задачи, над которыми можно поломать голову и решить интересные проблемы:
Написать скрипт, который сортирует изображения по папкам, исходя из их размера (для получения размера файла можно использовать дотнет объекты или ком объекты, предоставляемые эксплорером)
Для выполнения этого, вам уж точно понадобиться хорошо изучить Where-Object или Foreach-Object.
Написать парсер для башорга.
Чтобы, после логина в систему, вам на выбор выдавалась цитата из лучших за последние пять лет. Тут можно использовать регэкспы, с которыми PS очень хорошо дружит.
Ещё хочу заметить, что последние версии программного обеспечения от Microsoft поддерживают работу в PowerShell. Например, есть SQL PowerShell, который поставляется с 2008 сиквелом и позволяет сделать ls по записям в любой таблице. Это даёт ещё больший простор для фантазий.
Так же, хочу заметить, что комьюнити по разработке на PS очень сильно растёт и ширится. В частности, вы можете найти скрипты, готовые для чего угодно — например, вы можете нагуглить себе способ управления ITunes через PowerShell или способ использования Google Desktop Search в PS.
Что же, мой неинтересующийся друг, надеюсь, я дал тебе что-то интересное, и ты теперь возьмёшься за покорение интерпретатора, который действительно поможет тебе упростить твою нелёгкую программерскую жизнь и даст тебе возможность автоматизировать больше и быстрее. Очень приятно, что ты прочитал мою статью. Спасибо большое, я могу продолжать конкретно описывать определённые области, если вдруг тебе станет очень интересно.









