Как изучить powershell с нуля

Руководство по Windows PowerShell для начинающих

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

PowerShell — это объектно-ориентированный программный движок и скриптовый язык с интерфейсом командной строки, предоставляющий широкие возможности для конфигурирования операционных систем семейства MS Windows. Он предлагает как чисто консольный интерфейс, так и полноценную среду разработки PowerShell ISE (Integrated Scripting Environment, встроенное скриптовое окружение) для скриптов.

Для запуска интерфейса командной строки введите powershell в меню «Выполнить» (WinKey + R). PowerShell ISE запускается с помощью команды «PowerShell ISE» в том же меню. ISE более предпочтительно, так как предоставляет более широкие возможности разработчику благодаря подсветке синтаксиса, функции автозаполнения кода и другим особенностям, присущим многим «большим» IDE.

Как изучить powershell с нуля. PS2. Как изучить powershell с нуля фото. Как изучить powershell с нуля-PS2. картинка Как изучить powershell с нуля. картинка PS2

Среда разработки Windows PowerShell ISE

Написание и запуск скриптов

Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy :

Как изучить powershell с нуля. PS5. Как изучить powershell с нуля фото. Как изучить powershell с нуля-PS5. картинка Как изучить powershell с нуля. картинка PS5

После выполнения команды можно будет запускать свои скрипты

Командлеты

Командлеты — это команды с предопределённой функцией, подобные условным операторам в языках программирования. У них есть несколько ключевых особенностей:

Каждый командлет содержит в себе глагол и существительное, разделяемые дефисом. Например:

При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category. Запомните эту команду — она крайне важна для тех, кто изучает PowerShell с нуля, так как помогает быстрее начать ориентироваться в его возможностях.

Как изучить powershell с нуля. PS7. Как изучить powershell с нуля фото. Как изучить powershell с нуля-PS7. картинка Как изучить powershell с нуля. картинка PS7

Результат выполнения команды Get-Help-Category

Также можно создавать свои командлеты, но эта тема выходит за рамки нашего руководства по PowerShell для начинающих.

Параметры

Источник

Общие сведения о PowerShell

PowerShell — это оболочка командной строки и язык сценариев в одной системе. Она начала свое развитие в Windows. Эта оболочка предназначалась для автоматизации задач администрирования, но на данный момент стала межплатформенной и может использоваться для выполнения различных задач.

Более подробно конвейеры будут рассматриваться в других руководствах этой серии.

И даже после этого может потребоваться немного обработать результаты.

Для чего предназначена оболочка PowerShell?

С тех пор, как PowerShell применялась только в Windows, область ее действия значительно расширилась. Она по-прежнему используется для автоматизации задач Windows, но сейчас с ней можно работать для выполнения различных задач, некоторые из которых приведены ниже.

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

Кто использует PowerShell?

PowerShell является очень мощным средством и может быть полезно огромному числу пользователей с различными ролями. Традиционно PowerShell использовали сотрудники с ролью системного администратора, но теперь с этим средством активно работают люди, называющие себя инженерами DevOps, Cloud Ops и даже разработчиками.

Командлеты PowerShell

В состав PowerShell входят сотни предустановленных команд. Команды PowerShell называются командлетами. Слово cmdlet произносится как «командлет».

Использование командлетов для изучения PowerShell

Первое знакомство с PowerShell может показаться пугающим, так как кажется, что предстоит очень многому научиться. Однако изучение PowerShell происходит постепенно и по мере необходимости.

PowerShell содержит командлеты, которые помогут вам открыть для себя этот инструмент. С помощью этих трех командлетов можно узнать, какие команды доступны, что они делают и с какими типами они работают.

С помощью этих команд можно узнать о PowerShell практически все, что нужно.

Команда

Глагол является важным понятием в PowerShell. Это стандарт именования, которому следует большинство командлетов. Этого стандарта должны придерживаться и вы в процессе написания собственных команд. Суть в том, что глагол означает действие, которое будет выполняться, например чтение или изменение данных. В PowerShell имеется стандартизированный список глаголов. Чтобы получить полный список всех возможных команд, выполните командлет Get-Verb :

В качестве выходных данных будет выведен длинный список глаголов. Следует отметить, что в ответе приводится дополнительный контекст о действии, выполняемом глаголом. Вот как выглядит первая строка выходных данных:

Поиск команд с помощью командлета Get-Command

Командлет Get-Command возвращает список всех доступных команд, установленных в системе. Этот список довольно большой. Чтобы упростить поиск команд, рекомендуется ограничить объем возвращаемой информации. Можно отфильтровать ответ с помощью параметров или вспомогательных командлетов.

Фильтрация по имени

Выходные данные Get-Command можно отфильтровать с помощью различных параметров. В этом случае фильтрация работает как запрос определенного свойства в команде. Суть в том, что необходимо указать свойство, которое будет условием фильтрации, после чего следует задать строку, с которой нужно выполнить сопоставление. В итоге вы получите сравнение, которое выглядит следующим образом:

Фильтрация по существительным и глаголам

При фильтрации только по глаголу или только по существительному может быть выведен слишком большой результирующий набор. Чтобы сузить область поиска, рекомендуется объединить два параметра, как показано в примере ниже:

Результат выглядит следующим образом:

Таким образом, вы немного сократили объем выходных данных, так как знали глагол и то, что он вызывает.

Использование вспомогательных командлетов для фильтрации результатов

Выполнять фильтрацию можно не только с помощью параметров, но и с помощью команд. Ниже приведены некоторые команды, которые могут работать в качестве фильтров:

Результатом выполнения приведенной выше команды являются три первые верхние команды. Результат имеет следующий вид:

Стоит рассмотреть эту команду более подробно, так как с ее помощью можно выполнять гораздо больше задач (см. статью Select-Object).

Изучение объектов с помощью Get-Member

Научившись находить нужный командлет, вы, возможно, захотите узнать больше о результате его выполнения, то есть о выходных данных. Выходные данные представляют интерес по нескольким причинам, в число которых входят следующие:

Поиск по типу

Другой способ поиска нужной команды заключается в поиске команд, работающих с одним и тем же типом. При выполнении Get-Member вы получили возвращаемый тип в виде первой строки ответа, как показано ниже:

Теперь вы можете использовать этот тип и искать команды следующим образом:

Результатом выполнения приведенной выше команды является список команд, которые работают исключительно с типом Process :

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

Упражнение. Вызов первой команды

В этом упражнении вы узнаете, как выполнить первую команду.

Запустите консоль PowerShell, введя pwsh :

Результат будет выглядеть примерно так:

Поздравляем! Вы успешно выполнили первую команду и смогли получить сведения об установленной в системе версии PowerShell.

Упражнение. Поиск связанных команд

Цель этого упражнения — получить дополнительные сведения о команде. В итоге вы также узнаете, с каким типом работает команда, и какие другие аналогичные команды работают с тем же типом.

Запустите оболочку PowerShell.

Выполните команду Get-Process :

Результат будет примерно таким:

Результат будет примерно таким:

Итоги

Источник

Глава 1. Начало работы с PowerShell

Я часто вижу, что выступающие на конференциях и собраниях групп пользователей уже работают с PowerShell, когда демонстрируют презентации начального уровня. Эта книга начинается с ответов на вопросы, которые задавали участники мероприятий, ранее не использовавшие PowerShell.

В частности, эта глава посвящена поиску и запуску PowerShell, а также решению некоторых первоначальных проблем, с которыми сталкиваются новые пользователи при работе с PowerShell. Обязательно ознакомьтесь с примерами, приведенными в этой главе, и выполните их на компьютере Windows 10 с лабораторной средой.

Что нужно, чтобы начать работу с PowerShell?

Все современные версии операционных систем Windows поставляются с установленной оболочкой PowerShell. Если вы используете версию, предшествующую 5.1, следует установить последнюю версию.

Где найти PowerShell?

Самый простой способ найти PowerShell в Windows 10 — ввести PowerShell в строке поиска, как показано на рис. 1-1.

Как изучить powershell с нуля. figure1 1. Как изучить powershell с нуля фото. Как изучить powershell с нуля-figure1 1. картинка Как изучить powershell с нуля. картинка figure1 1

Обратите внимание, что на рис. 1-1 показаны четыре разных ярлыка для PowerShell. Компьютер, используемый в демонстрационных целях в этой книге, работает под управлением 64-разрядной версии Windows 10, поэтому существует 64-разрядная версия консоли PowerShell и PowerShell ISE (интегрированной среды сценариев) и 32-разрядная версия каждой из них (обозначена суффиксом (x86) на ярлыках). Если вы работаете с 32-разрядной версией Windows 10, у вас будет только два ярлыка. У этих элементов нет суффикса (x86), но они являются 32-разрядными версиями. Если у вас установлена 64-разрядная операционная система, рекомендуется запускать 64-разрядную версию PowerShell, только если вас нет особой причины для запуска 32-разрядной версии.

Сведения о запуске PowerShell в других версиях Windows см. в статье Запуск Windows PowerShell.

Как запустить PowerShell?

В производственной среде предприятия, которую я поддерживаю, я работаю с тремя разными учетными записями пользователей Active Directory. В лабораторной среде в этой книге используются зеркальные экземпляры этих учетных записей. Я вошел на компьютер с Windows 10 в качестве пользователя домена, который не является администратором домена или локальным администратором.

Я запустил консоль PowerShell, щелкнув ярлык Windows PowerShell, как показано на рис. 1-1.

Как изучить powershell с нуля. figure1 4. Как изучить powershell с нуля фото. Как изучить powershell с нуля-figure1 4. картинка Как изучить powershell с нуля. картинка figure1 4

Обратите внимание, что в строке заголовка консоли PowerShell указано «Windows PowerShell», как показано на рис. 1-4. Некоторые команды выполняются нормально, но PowerShell не поддерживает управление доступом пользователей (UAC). Это означает, что оболочка не может запрашивать повышение прав для задач, требующих утверждения администратором. Выдается следующее сообщение об ошибке.

Решение этой проблемы заключается в запуске PowerShell от имени пользователя домена, который является локальным администратором. Именно так настроена моя вторая учетная запись пользователя домена. При использовании принципа наименьших привилегий эта учетная запись не должна быть администратором домена или иметь любые повышенные привилегии в домене.

Закройте PowerShell. Перезапустите консоль PowerShell, только на этот раз щелкните правой кнопкой мыши ярлык Windows PowerShell и выберите пункт Запуск от имени администратора, как показано на рис. 1-5.

Как изучить powershell с нуля. figure1 5. Как изучить powershell с нуля фото. Как изучить powershell с нуля-figure1 5. картинка Как изучить powershell с нуля. картинка figure1 5

Если вы выполнили вход в Windows в качестве обычного пользователя, вам будет предложено ввести учетные данные. Я буду вводить учетные данные учетной записи пользователя, которая является пользователем домена и локальным администратором, как показано на рис. 1-6.

Как изучить powershell с нуля. figure1 6. Как изучить powershell с нуля фото. Как изучить powershell с нуля-figure1 6. картинка Как изучить powershell с нуля. картинка figure1 6

После повторного запуска PowerShell с правами администратора в строке заголовка должно быть указано «Администратор: Windows PowerShell», как показано на рис. 1-7.

Как изучить powershell с нуля. figure1 7. Как изучить powershell с нуля фото. Как изучить powershell с нуля-figure1 7. картинка Как изучить powershell с нуля. картинка figure1 7

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

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

Еще раз выполните поиск PowerShell, только на этот раз щелкните ее правой кнопкой мыши и выберите пункт «Закрепить на панели задач», как показано на рис. 1-8.

Как изучить powershell с нуля. figure1 8. Как изучить powershell с нуля фото. Как изучить powershell с нуля-figure1 8. картинка Как изучить powershell с нуля. картинка figure1 8

Щелкните правой кнопкой мыши ярлык PowerShell, который теперь закреплен на панели задач, и выберите пункт «Свойства», как показано на рис. 1-9.

Как изучить powershell с нуля. figure1 9. Как изучить powershell с нуля фото. Как изучить powershell с нуля-figure1 9. картинка Как изучить powershell с нуля. картинка figure1 9

Щелкните «Дополнительно», как показано в первой части рис. 1-10, установите флажок «Запуск от имени администратора», как показано во второй части рис. 1-10, а затем дважды нажмите кнопку OK, чтобы принять изменения и выйти из обоих диалоговых окон.

Как изучить powershell с нуля. figure1 10. Как изучить powershell с нуля фото. Как изучить powershell с нуля-figure1 10. картинка Как изучить powershell с нуля. картинка figure1 10

Вам больше никогда не придется беспокоиться о поиске PowerShell или о том, запущена ли оболочка от имени администратора или нет.

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

Какую версию PowerShell я использую?

Политика выполнения

Вопреки распространенному мнению, политика выполнения в PowerShell не является средством обеспечения безопасности. Она предназначена для предотвращения непреднамеренного выполнения сценария пользователем. Определенный пользователь может без труда обойти политику выполнения в PowerShell. В таблице 1-2 показана политика выполнения по умолчанию для текущих операционных систем Windows.

Версия операционной системы WindowsПолитика выполнения по умолчанию
Server 2019Удаленно подписанная
Server 2016Удаленно подписанная
Windows 10С ограниченным доступом

Любая команда PowerShell может выполняться в интерактивном режиме, независимо от настройки политики выполнения. Политика выполнения влияет только на команды, выполняемые в сценарии. Командлет Get-ExecutionPolicy используется для определения текущего параметра политики выполнения, а командлет Set-ExecutionPolicy используется для изменения политики выполнения. Рекомендуется использовать политику RemoteSigned, которая требует, чтобы предназначенные для выполнения скачиваемые сценарии были подписаны доверенным издателем.

Проверка текущей политики выполнения

Эта команда выполняется в интерактивном режиме без ошибок при условии, что PowerShell запущена с повышенными правами администратора. Но при сохранении в виде файла сценария и попытке выполнить сценарий выдается ошибка.

Обратите внимание, что в сообщении об ошибке, приведенном в предыдущем наборе результатов, указывается точная проблема (в этой системе отключено выполнение сценариев). При выполнении в PowerShell команды, которая создает сообщение об ошибке, обязательно следует прочесть сообщение об ошибке, а не просто перезапустить команду и надеяться на ее успешное завершение.

Измените политику выполнения PowerShell на удаленно подписанную.

Обязательно прочтите предупреждение, которое отображается при изменении политики выполнения. Кроме того, рекомендуется ознакомиться с разделом справки about_Execution_Policies, чтобы знать о влиянии изменения политики выполнения на безопасность.

Теперь, когда для политики выполнения задано значение Удаленно подписанная, сценарий Stop-TimeService.ps1 будет выполняться без ошибок.

Прежде чем продолжить, запустите службу времени Windows. В противном случае могут возникнуть непредвиденные проблемы.

Сводка

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

Просмотр

Рекомендуем прочесть

Тем, кто хочет более подробно изучить темы, описанные в этой главе, рекомендуется ознакомиться со следующими разделами справки по PowerShell.

В следующей главе вы узнаете о возможности обнаружения команд в PowerShell. Помимо прочих вопросов в ней будет рассматриваться обновление PowerShell, после которого разделы справки можно будет просматривать непосредственно в PowerShell, а не в Интернете.

Источник

Первые шаги для пауэршельшиков

Приди ко мне брате в Консоль!
— Админ Долгорукий.

Много ярлыков улетело в корзину со времён выхода в свет 2008 Windows. Люди попроще дивились новому синему окошку, которое ребята из Майкрософт зачем-то вставили в свои новые продукты. Люди, которые сидят на блогах и знают программирование начали изучать это окошко.

Как изучить powershell с нуля. image loader. Как изучить powershell с нуля фото. Как изучить powershell с нуля-image loader. картинка Как изучить powershell с нуля. картинка image loader

В итоге к народу начало приходить осознание того, что Майкрософт действительно разработали что-то новое и интересное.
И так, зачем вам это нужно? В основном, программа под названием 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.

Что же, мой неинтересующийся друг, надеюсь, я дал тебе что-то интересное, и ты теперь возьмёшься за покорение интерпретатора, который действительно поможет тебе упростить твою нелёгкую программерскую жизнь и даст тебе возможность автоматизировать больше и быстрее. Очень приятно, что ты прочитал мою статью. Спасибо большое, я могу продолжать конкретно описывать определённые области, если вдруг тебе станет очень интересно.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *