- Примеры PowerShell скриптов для Windows
- Что такое PowerShell и чем он хорош
- Выбираем среду разработки и инструменты
- Несколько полезных трюков
- PowerShell в сравнении с bat
- Удаленное управление с PowerShell
- Что почитать еще
- Итого
- Основы Windows PowerShell (создание и запуск скриптов
- Основы Windows PowerShell (создание и запуск скриптов | установка | обновление версии | PowerShell ISE)
- Постановка задачи для PowerShell
- Сравнение командной строки с PowerShell
- Проверка версии PowerShell
- PowerShell ISE
- Построение команд в PowerShell
- Особенности запуска скриптов в PowerShell
- Создание и запуск скриптов PowerShell на практике
Примеры PowerShell скриптов для Windows
В админиcтрировании всегда есть место творчеству. Хочешь сделать какую-нибудь автоматизацию рутинной задачи? Пожалуйста! Нужно что-то регулярно проверять на активность? Не вопрос! Хочешь обработать какой-нибудь гигантский отчет и вывести только актуальные данные? Тоже можно. Все эти и многие другие задачи лучше всего решать при помощи скриптов, и язык PowerShell в случае с Windows — оптимальный выбор.
Что такое PowerShell и чем он хорош
Пользователи UNIX и Linux, а с какого-то мoмента и macOS привыкли к тому, что под рукой всегда есть Bash — немного старомодное, но универсальное и мощное средство, при помощи которого всего парой строк можно творить удивительные вещи. Прописываешь новый скрипт в cron — и готово, он уже крутится на твоем компьютере или на сервере и незаметно делает что-нибудь полезное.
Возвращаясь в Windows (а без этого иногда никак), понимаешь, что скрипты .bat хоть и хороши, но спасают не всегда: очень уж ограниченны их возможности. И если ты до сих пор считал, что PowerShell — это неведомая штуковина, ради которой нужно что-то там поднимaть и настраивать, то не спеши с выводами — он, если разобраться, совсем неплох.
Windows PowerShell — это расширяемое средство автоматизации с открытыми исходниками, которое состоит из оболочки (командной строки) и скриптового языка. Впервые он был показан в 2003 году (тогда он назывался Monad). PowerShell 2.0 вышел в составе Windows 7 и Windows Server 2008 R2 и с тех пор присутствует в Windows в качестве стандартного компонента. Его даже включили в Windows XP SP3. PowerShell построен на основе .NET Framework и интегрирован с ним. PowerShell может обращаться к COM, WMI и ADSI, а также, конечно же, исполняет консольные команды.
В общем, «пошик» имеет крепкие связи с продуктами Microsoft, будь то Active Directory или почтовый сервер Exchange. Это позволяет без подключения к оснастке сервера обращаться к ним через консоль и отдaвать команды.
Если раньше ты не интересовался PowerShell, то, скорее всего, у тебя стоит вторая версия. Я рекомендую обновиться как минимум до третьей — она содержит куда больше возможностей и полезных фишек. Если не вдаваться в подробности, то в PowerShell 2.0 входит около десятка модулей и примерно 350 команд, а в PowerShell 3.0 уже около 2300 командлетов из более чем 70 модулей. «Хакер» также писал о том, чем отличается самый новый PowerShell пятой версии из Windows 10.
Выбираем среду разработки и инструменты
Теперь давай разберемся, где удобнее всего писать код. Можно, конечно, и в «Блокноте», Notepad++ или Sublime. Но это в данном случае не самый грамотный выбор редактора. Лучше всего начинать знакомство с PowerShell, вооружившись идущим в комплекте PowerShell ISE.
PowerShell ISE
Это даже не редактор, а практически полноценная среда разработки. Здесь есть функция IntelliSense, которая позволяет просматривать перечень командлетов и их параметров, переменных, утилит и прочего. Поддерживаются сниппеты, есть возможность расширения нaбора функций за счет различных аддонов. Очень полезно и окно Commands. В нем можно составлять команды в визуальном режиме: выбираешь модуль, находишь нужный командлет и задаешь ему необходимые параметры. Получившуюся команду можно скопировать в консоль или сразу запустить на выполнение. В общем, этакий конструктор для админа. Ну и конечно, есть подсветка синтаксиса, дебаггер и многое другое.
Тем не менее у PowerShell ISE есть и достойные конкуренты. Один из них — Dell PowerGUI.
PowerGUI — это визуальное дополнение к PowerShell. Оно упрощает сборку собственных сценариев до выбора необходимых командлетов. Берешь то, что нужно для решения задачи, и перетаскиваешь части кода, пока не получишь скрипт. Одна из главных фишек PowerGUI — это Power Packs, готовые скрипты, опубликованные сообществом пользователей и выложенные в свобoдный доступ. Тут есть и простенькие команды вроде добавления пoльзователей, и сложные — к примеру, управление свитчами и виртуальными машинaми. Все их легко дополнять и модифицировать в соответствии с нуждами.
powergui
PowerShell Studio 2015 фирмы Sapien — бoлее продвинутая среда, которая рассчитана на совместную разработку одного проекта большим количеством участников. Если ты когда-нибудь имел дело с Visual Studio, то, думаю, заметишь сходство. Среди полезных фишек PowerShell Studio — панель Ribbon, поддержка удаленной отладки, а также функции компилятора, которые позволяют включить скрипты в исполняемые файлы. Есть поддержка разных версий PowerShell.
Стоит упомянуть и Script Browser для Windows PowerShell ISE. Это не среда разработки, но вeсьма интересный инструмент, разработанный в Microsoft. Script Browser открывает доступ к базе готовых скриптов, которые можно использовать в качестве образцов для написания своего кода. А еще эта штука умеет анализировать код, который ты пишешь, и подсказывает, как его улучшить.
Script Browser для Windows PowerShel
Несколько полезных трюков
Разобравшись с редактором, можно приступать к написанию кода. PowerShell — несложный язык, и, я думаю, ты быстро разберешься, что к чему. Команды здесь называются командлетами, и каждый из них состоит из двух частей. Сначала идeт действие, например Get, Set, Add, Invoke, Remove. Затем указывается то, на что действие направлено: Service, VM, AzureAccount, DHCPServerSetting. Каждая часть отделяется от другой дефисом. Получается, к примеру, get-process. Это, кстати, полезная команда, которая выводит список процессов. Скажем, если написать
увидим что-то такое:
Теперь можно завершить зависший процесс:
Хочешь посмотреть права на директорию? Сделать это помогает такой командлет:
Можно проcмотреть рекурсивно, правда уже чуть с более сложной логикой:
Если не можешь понять, что делает какой-то командлет, напиши следующее (заменив Get-Process на название неизвестного командлета):
Можно также выполнить
В этом случае будет выведен весь список возможных вариантов.
Теперь давай попробуем узнать что-нибудь о нашем домене через кoнсоль PowerShell. К примеру, давай посмотрим пользовательские аккаунты, у которых установлен неистекающий пароль:
Кстати, к каждому полю в окошке опции учетной записи или компьютера можно обратиться и считать данные. Таким образом можно делать целые срезы. Вот, к примеру, запрос на основе данных о телефонных номерах:
PowerShell в сравнении с bat
Иногда задачу можно решить как старым дедовским методом, так и при помощи PowerShell. Я рекомендую не лениться и использовать PS, хотя бы просто потому, что так ты его быстрее изучишь и сможешь применять в более сложных ситуациях. К тому же ты постепeнно оценишь его синтаксис — более элегантный и консистентный. Вот несколько примеров, как вещи делались раньше и как их можно сделать при помощи PowerShell.
Следующая командная строка перезагрузит компьютер с задержкой в десять секунд:
На PowerShell это будет выглядеть вот так:
Вот так через bat можно перезагрузить службу dnscache (или любую другую):
В PowerShell это будет так:
Мап диска в bat:
Да, иногда приходится печатать чуть больше букв, но читаются команды PS гораздо лучше. И это не говоря уже про разные новые возможности.
Удаленное управление с PowerShell
В основном описанные в статье команды выполняются на том же компьютере, на котором они запущены. Проще говоря, команды для управления AD выполнять нужно на сервере, где контроллер домена и установлен, что, согласиcь, на корню рубит удобство и автоматизацию. Для выполнения команд удалeнно, что нам и требуется, надо пользоваться специальными командлетами. К пpимеру, для подключения к удаленному компьютеру и перезапуску там спулера пeчати вводи
Что почитать еще
Книжек и прочих обучающих материалов по PowerShell огромное количество. Есть как справочники, так и учебные туториалы. Начать можно с сайта Microsoft, где есть неплохие видеоуроки.
В деле немало поможет и книга «Master-PowerShell» Тобиаса Велтнера. В ней автор охватывает многие понятия вроде массивов, хеш-таблиц, конвейеров, объектов, функций, обработки ошибок, регулярных выражeний и так далее. Заодно подробно рассматривается XML и разные аспекты администрирования. Увы, на русский эта книга не переведена.
Из русскоязычных мануалов по PowerShell мне попадался «Windows PowerShell 2.0. Справочник администратора» Уильяма Станека — он весьма неплох.
На «Хабрахабре» есть перевод полезной статьи Джеффери Хикса об администрировании Active Directory при помощи PowerShell.
Итого
Как видишь, все не так сложно, как кажется на первый взгляд. Главное — четко понимать, что нужно на выходе, и на этом основании выбирать командлеты. А с удобным редактором это делaть куда легче. Доступность разнообразных заготовок может заметно упростить решение повседневных задач администрирования. Знания «пошика» прокачаешь по ходу дела, а это в работе с Windows совсем не лишнее.
Основы Windows PowerShell (создание и запуск скриптов
Основы Windows PowerShell (создание и запуск скриптов | установка | обновление версии | PowerShell ISE)
В этом видео мы поговорим о инструменте, который облегчает жизнь специалистам IT, выполняющим рутинную работу. Речь пойдет о PowerShell, а точнее о создании и запуске скриптов в среде PowerShell.
В данном видео, мы посмотрим:
— как выглядит оболочка PowerShell,
— уточним версию компонентов и обновим их до актуального состояния.
— поговорим о PowerShell ISE, для чего она нужна и как ей пользоваться.
— обретем базовые знания, касающиеся синтаксиса PowerShell.
— разберем решение реальной задачи при помощи командлетов PowerShell.
Постановка задачи для PowerShell
Итак, есть некая организация, учетные записи компьютеров которой хранятся в активном каталоге. Предположим, что в зависимости от свойств, учетные записи располагаются в разных организационных единицах. Задача состоит в том, чтобы получить список компьютеров по заданным параметрам поиска из всего домена или определённой организационной единицы, не выписывая данные вручную. Также я предлагаю выгрузить список в текстовый файл, для последующей аналитической обработки.
Сравнение командной строки с PowerShell
Начнем с запуска обычной командной строки, далее запустим оболочку PowerShell. На первый взгляд они очень похожи, но принципиальные различия в них есть. Оболочка PowerShell, была разработана и выпущена как раз для того что бы сменить стандартную командную строку. Она, если можно так выразиться, является расширенной версией типично командной строки windows.
Оболочка позволяет выполнять как стандартные команды, используемые в командной строке, так и сценарии, благодаря более глубокой интеграции с операционной системой. Так же технология PowerShell, позволяет встраивать сценарии в приложения, для реализации различных функций.
Проверка версии PowerShell
Для полноценной работы с оболочкой, и использования доступных функций, необходимо понимать с какой версией PowerShell ведется работа. Для того что бы узнать какая версия PowerShell установлена, необходимо запустить команду $PSVersionTable. На слайде представлен вывод данной команды, после обновления. В нашем случае версия 4.0 Процесс обновления оболочки будет представлен в практической части видео.
PowerShell ISE
Для того что бы не навредить системе и проверить работоспособность скрипта, разработку, отладку и тестирование удобно проводить в специальной среде. PowerShell ISE дает такую возможность. Интерфейс приложения разделен на 3 части. В верхней части вы можете добавлять код, в нижней части получать вывод команд, а правая часть является своеобразной справкой. В ней вы можете подсмотреть необходимые для процесса командлеты. Более того в этой среде реализованы различные функции, такие как подсветка синтаксиса, конструктор команд и авто заполнение, что существенно облегчает программирование.
Построение команд в PowerShell
Теперь давайте немного поговорим о синтаксисе в PowerShell. Необходимо запомнить основной принцип построения командлетов. Вначале идет ГЛАГОЛ, далее СУЩЕСТВИТЕЛЬНОЕ и уже через тире, вы можете ввести параметры для этого командлета. На слайде представлен сложный командлет, но принцип остается неизменным. Сначала мы запрашиваем вывод справки Get-help, а затем указываем для какой команды мы хотим это сделать Get-date. Используя PS ISE, вы сможете получать список доступных параметров до ввода самого параметра, просто введя тире и выбрав необходимы параметр из списка.
Особенности запуска скриптов в PowerShell
Необходимо упомянуть об особенностях запуска скриптов PowerShell. Данное средство администрирования и автоматизации обладает очень высоким потенциалом и является мощным инструментом, поэтому разработчиками было принято решение ограничить запуск скриптов по умолчанию. Существует 4-е основных политики безопасности, регулирующих запуск скриптов на целевом устройстве. Вы можете ознакомиться с ними на данном слайде. У каждой политики свои особенности, и они применимы для разных сценариев. В нашем случае, для практической работы мы разрешим выполнение неподписанных скриптов используя политику «unrestricted»
Создание и запуск скриптов PowerShell на практике
Перейдем непосредственно к демонстрации. В качестве стенда для практической работы будет использован сервер с Windows Server 2016, с установленной ролью активного каталога и клиентская машина на windows 10.
- На контроллере домена смотрим структуру AD, определяем уч. записи компьютеров в каталоге, запоминаем.
- На клиентской машине запускаем PS, смотрим версию, обновляем до актуальной, обновляем справку.
- Устанавливаем RSAT для возможности подключения AD модуля в PS.
- Выставляем необходимые настройки политики для запуска скриптов.
- Сооружаем скрипт, позволяющий получить список машин из определенной OU по фильтру имени, запускаем, получаем результат, выгружаем в TXT.
Bonus: получение справки по командам get-help get-* с параметром «example» и «Full». Для вывода примеров использования команды.
Выводы: Сегодня мы поговорили о PowerShell и на практике посмотрели его возможности по упрощению рутинных задач для IT. В этот инструмент разработчиками заложен огромный потенциал и на мой взгляд знание PowerShell, является необходимым навыком для современного системного администратора.
Спасибо за внимание!
В описании данного видео, есть временные метки, по которым вы сможете сразу перейти к моменту в видео, который вас больше всего интересует.
Список временных меток:
- Обзор видеоурока «Основы Windows PowerShell»
- Постановка задачи для PowerShell
- Сравнение командной строки с PowerShell
- Проверка версии PowerShell
- PowerShell ISE
- Построение команд в PowerShell
- Особенности запуска скриптов в PowerShell
- Создание и запуск скриптов PowerShell на практике