Не один год прошел с момента выхода Windows 7 и Server 2008.
Программисты, системные администраторы и продвинутые пользователи нашли множество применений синему окошку, схожему с командной строкой.
Начинающие же юзеры в большинстве своём даже не знают, что такое PowerShell (PS).
А ведь скрипты для PowerShell позволяют автоматизировать, без малого, 100% действий и сценариев, выполняемых в операционной системе посредством командной строки и графического интерфейса.
С основными возможностями этой программы и ознакомимся, побольше внимания уделив функции создания и запуска скриптов (микропрограмм).
Содержание:
Что собой представляет Windows PowerShell?
PowerShell – интерпретатор командной строки CMD на основе .NET Framework, наделённый собственным языком сценариев.
Первое значит, что работает он в текстовом режиме: вводишь запускаешь команду, а на экране видишь результат её выполнения.
Как это было в MS-DOS и старых версиях UNIX’а.
Второе значительно упрощает, ускоряет и автоматизирует администрирование, обслуживание систем, приложений, процессов и связанных с ними сервисов администраторами и простыми юзерами.
По сравнению с другими интерпретаторами, PS отличается:
- интеграцией с .NET Framework – позволяет создавать мощные скрипты, внедряя в них программный код;
- все возвращаемые данные являются объектами, а не данными текстового/строчного типа (string), что подразумевает их передачу другим скриптам и любую обработку.
PowerShell второй версии обладает следующими возможностями, часть из которых рассмотрим подробнее:
- Возможность представления команд в виде командлетов – их запуск осуществляется внутри интерпретатора, в ином случае команда выполняется в отдельном процессе.
- Использование конвейеров – предназначены для передачи данных из одной команды в другую с сохранением их структуры и типа.
- Интегрирована многопоточная передача данных по сети с установкой приоритетности и возобновлением соединения.
- Поддержка позиционных и именованных параметров.
- Фоновая работа – асинхронный вызов команд и запуск скриптов на удалённых машинах.
- Установка ограниченных сессий с удалёнными клиентами и выполнение сценариев на них.
- Модули – способ организации скриптов, когда они становятся самодостаточными и выполняются в собственном контейнере, не влияя на окружение модуля.
- Наличие обработчика ошибок.
- Графическая среда для языка: синтаксис, отладчик, подсветка, автоматическое завершение команд с поддержкой Юникод и закладок.
- Добавление точек прерывания в строки, команды, операции и переменные для отладки сценария.
- Блочные и подстрочные комментарии.
- Поддержка создания алиасов для некоторых командлетов, преобразовывающихся в обычные команды в момент выполнения.
- Создание ограниченных сессий, где можно выполнять строго заданный перечень команд и очень многое другое.
Исходный код PowerShell стал доступным каждому: любой участник сообщества может беспрепятственно создавать собственные расширения для увеличения функционала интерпретатора командной строки.
Приступать к освоению интегрированного скриптового языка, не имея навыков программирования, можно.
Создать сложный сценарий получится вряд ли, но выполнять последовательности примитивных действий получится едва ли не у каждого.
Хотя, не обладая знаниями об основных понятиях PowerShell, сделать в окне командного интерпретатора вряд ли что-либо получится. С них и начнём.
к содержанию ↑Командлеты
Часть командлетов поддерживает получение/передачу данных и массивов информации с сохранением их структуры и типа. Это работает по принципу конвейера (речь об этом пойдёт в следующем разделе). Несмотря ни на что, командлеты запускаются и обрабатывают объекты строго порядку.
Для реализации командлетов могут задействоваться любые поддерживаемые .NET API, созданные на любом из .NET-языков.
Таким образом юзеру предоставляется доступ до специфических функций программы.
Командлеты умеют эксплуатировать API для получения доступа к требуемой информации напрямую или через уникальные пути (буквы дисков и пути к директориям).
Посредством командлетов можно работать с реестром Windows, объектами файловой системы и хранилища сертификатов, установленными приложениями и службами.
к содержанию ↑Конвейер
При создании не очень уж примитивных сценариев или для выполнения каких-либо операций с данными, полученными в результате работы скрипта порой приходится также совершать какие-либо действия.
Для этого существует конвейер. Как и в UNIX, он объединяет команды путём передачи выходных данных одного командлета во входные для другого в неизменном виде, сохраняя свой тип.
При этом не требуются никакой контейнер или посимвольный разбор информации.
Скрипты
Несмотря на то, что оболочка позволяет автоматизировать множество действий, вводить команды нужно вручную, как и в случае с командной строкой, что не очень удобно.
Особенно, когда одни и те же операции следует выполнять постоянно.
Да и без человеческого фактора не обойтись: опечатки, ошибки, случайно задетые клавиши при написании строчек кода, исправление или набор строки заново требуют более дружелюбного отношения к пользователю.
Для выполнения однообразных цепочек действий в PS реализованы сценарии – текстовые файлы с последовательностью понятных для интерпретатора команд внутри.
Скрипты в PowerShell еще больше упростят и автоматизируют работу за ПК и его обслуживание, особенно, если в сценарии присутствуют разветвления, условия, логические операции и циклы.
Но здесь «не всё золото, что блестит»: написать собственный сценарий или загрузить готовый (пускай и немного подогнав его под собственные цели) так просто не получится.
Для выполнения макроса в Windows PS необходимо пройти контроль его запуска.
Если он не пройден, а скрипт должен выполниться, придётся изменить конфигурацию отвечающих за безопасность макросов объектов.
к содержанию ↑Прежде чем пользоваться скриптами
При эксплуатации VBS возникает много проблем, от коих разработчики PowerShell избавились напрочь, если скриптовую безопасность не понижать для удовлетворения скриптовых запросов пользователя или решения задач, связанных с уровнем защищенности операционной системы.
Запуск скачанного скрипта на пользовательской машине – простой и действенный вариант распространения вредоносного программного обеспечения или кражи персональной информации злоумышленниками.
Преднамеренный запуск макросов происходит после изменения уровня безопасности, если юзер даст добро, осознавая, что он делает, и зная наверняка, что в файле *.ps1 находится.
По причине неудобства конфигурации защиты для людей, нуждающихся в реализации и выполнении собственных сценариев, существует возможность изменения конфигурации.
Здесь можно как снизить защиту до минимума, так и разумно лавировать между возможность открыть дыры для проникновения вредоносного ПО в систему и удобством в работе с PowerShell.
Оболочка обладает тремя уровнями безопасности:
- файлы с расширением ps1 не идентифицируются системой как исполняемые и обозначаются как неизвестные или текстовые (по двойному клику открываются в используемом на компьютере по умолчанию текстовом редакторе);
- оболочка позволяет выполнять скрипты после указания к ним полного пути, скриптовые файлы в текущей директории не ищутся, делая невозможным выполнения макросов, расположенных в текущем каталоге;
- запуск встроенного скрипта Execution Policy, отвечающего за добавление в перечень разрешенных скриптов требуемого.
Существует и понятие политики выполнения, созданной с целью предотвратить случайный запуск сценариев. Настроек политики запуска существует целых пять:
- ограниченные – установлены по умолчанию, выполняются только подписанные Microsoft сценарии, позволяющие получать информацию об аппаратной и программной оболочке компьютера;
- имеющих подпись удаленных файлов – выполнять можно все макросы, но загруженные с интернета или присланные по почте файлы должны быть подписанными;
- имеющих цифровую подпись от надежного источника – выполняются все подписанные сценарии;
- неограниченные – запуск любых макросов;
- обходные – предназначены для программистов, которые создают собственную систему безопасности, а не используют представленную в оболочке.
Запуск PowerShell
От теории пора переходить к практике. Итак, для выполнения скриптов необходимо получить цифровую подпись или понизить политику безопасности (второй вариант попроще).
Вызвать окно PowerShell можно несколькими путями.
Представлено оно в двух видах:
- классическая консоль;
- PowerShell ISE – добавляет поддержку вкладок, синтаксиса, контекстной справки, контекстного и главного и меню, что в значительной мере облегчает работу в интерпретаторе.
Пуск
Проще всего вызвать PS через
.- Открываем меню (в Windows 7 кликаем «Все программы»).
- Идём в каталог Windows PowerShell и кликаем по нужной иконке.
Также вызвать PS через можно с помощью интегрированной поисковой системы.
к содержанию ↑Командный интерпретатор
Кто любит нестандартные и быстрые способы запуска, воспользуйтесь окном
. Оно открывается одноимённой кнопкой в Пуске и комбинацией клавиш + .В диалоговом окне пишем «powershell» и жмём
. к содержанию ↑Win+X
В Windows 10 PS можно вызывать из меню WinX. Дело в том, что по умолчанию путём клика по команде
открываемся CMD. Её можно заменить на PowerShell.Открываем
Панели задач, во вкладке ставим галочку возле единственной опции и сохраняем настройки.
Можно вызывать PowerShell через командную строку, прописав в ней
или запуском исполняемого файла по пути: %WINDIR%\System32\WindowsPowerShell\v1.0 для 32-битных систем и по адресу %WINDIR%\ syswow64\WindowsPowerShell\v1.0 для 64-разрядных Windows любой редакции.Настройка политики безопасности
Осталось немного – разрешить PowerShell выполнение скриптов. Прописываем команду «Set-ExecutionPolicy RemoteSigned» и жмем «Y».
На этом всё. Теперь можете выполнять любые командлеты и скрипты. Попробуем, например, отобразить список активных процессов, выполнив
. к содержанию ↑Запуск скриптов
Создавать сценарии можно в любом текстовом редакторе (лучше остановиться на Win, Notepad++ или подобному, с поддержкой синтаксиса или проверки) либо в программе PowerShell ISE.
Последняя предоставляет удобный доступ к командлетам, возможности запуска, отладки и сохранения сценариев.
Предположим, что свой первый скрипт вы написали (это получение перечня запущенных процессов), сохранили через меню
, и его нужно запустить. Делается это тремя путями:
Добавить комментарий
121 комментарий