Powershell: как работать с программой, создавать, запускать и изменять скрипты

Не один год прошел с момента выхода Windows 7 и Server 2008.

Программисты, системные администраторы и продвинутые пользователи нашли множество применений синему окошку, схожему с командной строкой.

Начинающие же юзеры в большинстве своём даже не знают, что такое PowerShell (PS).

А ведь скрипты для PowerShell позволяют автоматизировать, без малого, 100% действий и сценариев, выполняемых в операционной системе посредством командной строки и графического интерфейса.

С основными возможностями этой программы и ознакомимся, побольше внимания уделив функции создания и запуска скриптов (микропрограмм).

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

Содержание:

Что собой представляет Windows PowerShell?

PowerShell – интерпретатор командной строки CMD на основе .NET Framework, наделённый собственным языком сценариев.

Первое значит, что работает он в текстовом режиме: вводишь запускаешь команду, а на экране видишь результат её выполнения.

Как это было в MS-DOS и старых версиях UNIX’а.

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

Для Vista, XP и более старых редакций Windows, если их кто-то использует, PowerShell можно установить с пакета Windows Management Framework.

По сравнению с другими интерпретаторами, PS отличается:

  • интеграцией с .NET Framework – позволяет создавать мощные скрипты, внедряя в них программный код;
  • все возвращаемые данные являются объектами, а не данными текстового/строчного типа (string), что подразумевает их передачу другим скриптам и любую обработку.
Рис. 1 – Вид окна PowerShell

Рис. 1 – Вид окна PowerShell

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

  • Возможность представления команд в виде командлетов – их запуск осуществляется внутри интерпретатора, в ином случае команда выполняется в отдельном процессе.
  • Использование конвейеров – предназначены для передачи данных из одной команды в другую с сохранением их структуры и типа.
  • Интегрирована многопоточная передача данных по сети с установкой приоритетности и возобновлением соединения.
  • Поддержка позиционных и именованных параметров.
  • Фоновая работа – асинхронный вызов команд и запуск скриптов на удалённых машинах.
  • Установка ограниченных сессий с удалёнными клиентами и выполнение сценариев на них.
  • Модули – способ организации скриптов, когда они становятся самодостаточными и выполняются в собственном контейнере, не влияя на окружение модуля.
  • Наличие обработчика ошибок.
  • Графическая среда для языка: синтаксис, отладчик, подсветка, автоматическое завершение команд с поддержкой Юникод и закладок.
  • Добавление точек прерывания в строки, команды, операции и переменные для отладки сценария.
  • Блочные и подстрочные комментарии.
  • Поддержка создания алиасов для некоторых командлетов, преобразовывающихся в обычные команды в момент выполнения.
  • Создание ограниченных сессий, где можно выполнять строго заданный перечень команд и очень многое другое.

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

Приступать к освоению интегрированного скриптового языка, не имея навыков программирования, можно.

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

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

к содержанию ↑

Командлеты

Командлеты – своеобразные команды PS, за которыми скрываются самые разные функции. Встроенные в интерпретатор команды реализованы по принципу «глагол-имя существительное», например, Get-Process (получение списка процессов). Такое решение позволяет понимать суть команды уже из её названия (на английском языке).

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

Для реализации командлетов могут задействоваться любые поддерживаемые .NET API, созданные на любом из .NET-языков.

Таким образом юзеру предоставляется доступ до специфических функций программы.

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

Посредством командлетов можно работать с реестром Windows, объектами файловой системы и хранилища сертификатов, установленными приложениями и службами.

к содержанию ↑

Конвейер

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

Для этого существует конвейер. Как и в UNIX, он объединяет команды путём передачи выходных данных одного командлета во входные для другого в неизменном виде, сохраняя свой тип.

При этом не требуются никакой контейнер или посимвольный разбор информации.

В состав передаваемой информации может входить и функция. После окончания работы объединённых команд вызывается функция превращения информации в текстовый вид (конвертация данных в строковые) с применением форматирования текста.

к содержанию ↑

Скрипты

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

Особенно, когда одни и те же операции следует выполнять постоянно.

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

Для выполнения однообразных цепочек действий в PS реализованы сценарии – текстовые файлы с последовательностью понятных для интерпретатора команд внутри.

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

Но здесь «не всё золото, что блестит»: написать собственный сценарий или загрузить готовый (пускай и немного подогнав его под собственные цели) так просто не получится.

Если бы в Microsoft это разрешили, сколько бы бед наделали скрипты для PowerShell, написанные мошенниками и недоброжелателями в корыстных или хулиганских целях.

Для выполнения макроса в Windows PS необходимо пройти контроль его запуска.

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

к содержанию ↑

Прежде чем пользоваться скриптами

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

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

Всё происходит из-за элементарного незнания содержимого скриптового файла (ps1) и желания побыстрее решить свои задачи за счёт труда других. Объекты, контролирующие уровень безопасности выполнения сценариев, создают окружение, в котором запустить скрипт невозможно.

Преднамеренный запуск макросов происходит после изменения уровня безопасности, если юзер даст добро, осознавая, что он делает, и зная наверняка, что в файле *.ps1 находится.

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

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

Оболочка обладает тремя уровнями безопасности:

  • файлы с расширением ps1 не идентифицируются системой как исполняемые и обозначаются как неизвестные или текстовые (по двойному клику открываются в используемом на компьютере по умолчанию текстовом редакторе);
  • оболочка позволяет выполнять скрипты после указания к ним полного пути, скриптовые файлы в текущей директории не ищутся, делая невозможным выполнения макросов, расположенных в текущем каталоге;
  • запуск встроенного скрипта Execution Policy, отвечающего за добавление в перечень разрешенных скриптов требуемого.

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

Существует и понятие политики выполнения, созданной с целью предотвратить случайный запуск сценариев. Настроек политики запуска существует целых пять:

  • ограниченные – установлены по умолчанию, выполняются только подписанные Microsoft сценарии, позволяющие получать информацию об аппаратной и программной оболочке компьютера;
  • имеющих подпись удаленных файлов – выполнять можно все макросы, но загруженные с интернета или присланные по почте файлы должны быть подписанными;
  • имеющих цифровую подпись от надежного источника – выполняются все подписанные сценарии;
  • неограниченные – запуск любых макросов;
  • обходные – предназначены для программистов, которые создают собственную систему безопасности, а не используют представленную в оболочке.

Проверить текущее состояние политики запуска можно командой «Get-ExecutionPolicy». Какой бы ни была политика безопасности, пользователь не сможет запустить скрипт, в котором содержатся команды, на выполнение коих у него недостаточно привилегий.

к содержанию ↑

Запуск PowerShell

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

Вызвать окно PowerShell можно несколькими путями.

Представлено оно в двух видах:

  • классическая консоль;

Рис. 2 – Окно PowerShell

Рис. 2 – Окно PowerShell

  • PowerShell ISE – добавляет поддержку вкладок, синтаксиса, контекстной справки, контекстного и главного и меню, что в значительной мере облегчает работу в интерпретаторе.

Рис. 3 – Внешний вид PowerShell ISE

Рис. 3 – Внешний вид PowerShell ISE

к содержанию ↑

Пуск

Проще всего вызвать PS через Пуск.

  1. Открываем меню (в Windows 7 кликаем «Все программы»).
  2. Идём в каталог Windows PowerShell и кликаем по нужной иконке.
powershell скрипты

Рис. 4 – Запуск PS через Пуск

Также вызвать PS через можно с помощью интегрированной поисковой системы.

Рис. 5 – Запуск PS через поиск

Рис. 5 – Запуск PS через поиск

к содержанию ↑

Командный интерпретатор

Кто любит нестандартные и быстрые способы запуска, воспользуйтесь окном «Выполнить». Оно открывается одноимённой кнопкой в Пуске и комбинацией клавиш Win+R.

В диалоговом окне пишем «powershell» и жмём «Ввод».

Рис. 6 – Запуск PS через диалог «Выполнить»

Рис. 6 – Запуск PS через диалог «Выполнить»

к содержанию ↑

Win+X

В Windows 10 PS можно вызывать из меню WinX. Дело в том, что по умолчанию путём клика по команде «Командная строка» открываемся CMD. Её можно заменить на PowerShell.

Открываем «Свойства» Панели задач, во вкладке «Навигация» ставим галочку возле единственной опции и сохраняем настройки.

Рис. 7 – Замена командной строки на PowerShell в меню WinX

Рис. 7 – Замена командной строки на PowerShell в меню WinX

 

Можно вызывать PowerShell через командную строку, прописав в ней «powershell» или запуском исполняемого файла по пути: %WINDIR%\System32\WindowsPowerShell\v1.0 для 32-битных систем и по адресу %WINDIR%\ syswow64\WindowsPowerShell\v1.0 для 64-разрядных Windows любой редакции.

powershell скрипты

Рис. 8 – Запуск PS из каталога, где хранится его исполняемый файл

к содержанию ↑

Настройка политики безопасности

Осталось немного – разрешить PowerShell выполнение скриптов. Прописываем команду «Set-ExecutionPolicy RemoteSigned» и жмем «Y».

Рис. 9 – Изменение политики выполнения

Рис. 9 – Изменение политики выполнения

На этом всё. Теперь можете выполнять любые командлеты и скрипты. Попробуем, например, отобразить список активных процессов, выполнив «Get-Process».

Рис. 10 – Результат выполнения первой команды

Рис. 10 – Результат выполнения первой команды

к содержанию ↑

Запуск скриптов

Создавать сценарии можно в любом текстовом редакторе (лучше остановиться на Win, Notepad++ или подобному, с поддержкой синтаксиса или проверки) либо в программе PowerShell ISE.

Последняя предоставляет удобный доступ к командлетам, возможности запуска, отладки и сохранения сценариев.

Предположим, что свой первый скрипт вы написали (это получение перечня запущенных процессов), сохранили через меню «Файл», и его нужно запустить. Делается это тремя путями:

1 Прописываем полный путь к скрипту в PowerShell (или ISE);
Рис. 11 – Запуск первого скрипта путём прописывания пути к нему

Рис. 11 – Запуск первого скрипта путём прописывания пути к нему

2 Через контекстное меню файла ps1;
Рис. 12 – Запуск сценария через его контекстное меню

Рис. 12 – Запуск сценария через его контекстное меню

3 Открываем сценарий в PowerShell ISE и жмём F
powershell скрипты

Рис. 13 – Запуск скриптов из окна PowerShell ISE

Важно, чтобы в пути к файлу отсутствовали пробелы!

PowerShell – мощное средство для упрощения выполнения рутинных операций в Windows 7, Server 2008 и более новых. Важное достоинство PowerShell – скрипты и наличие версии программы с графическим интерфейсом PS ISE. Команды в ней представлены в виде командлетов, что сделает возможным ознакомление с оболочкой и понимание смысла каждой команды. Политика безопасности не даст новичку навредить своему компьютеру полученными из неизвестных источников скриптами, а режим отладки, создание собственных командлетов, функций и механизм обработки ошибок открывают перед программистами и администраторами неограниченные возможности.

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

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

121 комментарий

сначала новые
по рейтингу сначала новые по хронологии
Geek-Nose