Виндовс пауэр шелл что это: Что такое Windows PowerShell и с чем его едят? Часть 1: основные возможности / Хабр
Содержание
Windows PowerShell – что это за программа, как ее запустить в Windows 7, 8, 10, команды и командлеты, версия утилиты, Виндовс Пауэр Шелл ISE
Для многих пользователей, этот неотъемлемый элемент ОС Windows, представляется настоящей загадкой. Открывая его, они видят список из непонятных символов, разобраться в котором для непосвященных не представляется возможным. Но не стоит его недооценивать, это программа, несущая важную управленческую функцию, способна упростить работу с ПК, в чем бы она ни выражалась.
Утилита полностью автоматизирована, для управления рабочими процессами понадобится минимальное вмешательство человеческого фактора. Все что для нужно — задавать правильные команды. Но прежде чем это делать, нужно разобраться в главном вопросе: Что такое Windows PowerShell, для каких целей он служит и какие функции выполняет.
Краткий обзор программы
По сути, это усовершенствованная версия MS-DOS – старейшей дисковой операционной системы от компании Microsoft, выпущенной еще в середине 80-х гг. прошлого века. Она содержала в себе приложения, с функцией интерпретаторов, далеких от совершенства, умевших задавать несколько простых команд.
Разработчики неоднократно пытались компенсировать недостатки MS-DOS дополнительными компонентами для запуска сценария, такими как MS Script Host, с языками вроде Jscript, но это решало проблему лишь частично. В 2003 г. началась разработка программы способной заменить старую оболочку, получившую название Monad, известную сейчас как PowerShell. Хотя его впервые запустили в конце 2006 года и включили в ОС Windows XP, в завершенном виде он вышел только спустя 10 лет непрерывных доработок, в 2016 г. когда получил открытый исходный код. PowerShell широко используется в Windows 7, 8 и 10.
Windows PowerShell – что это такое
Ответить на этот вопрос в двух словах не получится, он слишком сложный и требует детального рассмотрения. Это средство автоматизации с расширяемыми свойствами и открытым исходным кодом – оболочка, заключающая в себе интерфейс командной строки с языком сценариев для выполнения скриптов, содержащихся в ней. Набор скриптов, заключенных в системные файлы имеет расширение PS1, но для удобства пользователей запускается как обычные BAT и CMD файлы.
Таким образом, PowerShell – это не что иное, как скриптовый язык, созданный на платформе .NET для выполнения задач по части управления файлами, сохраненными на системном диске, запущенными процессами и службами. Кроме того, ему подчинено управление аккаунтами в сети Интернет и любыми настройками, от системных, до настроек функциональности отдельных приложений. Но сам по себе PowerShell только оболочка, основные функции выполняют сопутствующие элементы, наполняющие ее. Далее постараемся разобраться в PowerShell, чтобы работа с утилитой стала понятна даже «чайникам».
Командлеты
Самые важные — это командлеты, исполняемые файлы, содержащие в себе собственную программу, загружаемую в компьютер для выполнения поставленных задач. Они являются главной составляющей Виндовс Пауэр Шелл, отвечая за его функциональность, и представляют собой набор команд для запуска сценария, вводящегося в командной строке.
Это несколько отличается от запросов, вводимых в поисковой строке браузера, но имеет те же принципы. В оболочке содержится сохраненная коллекция из сотен таких команд, отвечающих за определенные задачи. Формируются командлеты по обычному принципу Глагол + Существительное, что отражает их назначение.
Конвейер
Второй по значимости элемент (тип команд) PowerShell, передающий выходные данные одних командлетов во входные данные других, служит как бы посредником между ними. Конвейер служит, главным образом, для передачи и возврата не только командлетов, но и любых других объектов. Способен он выполнять и более сложные и ответственные задачи. А наиболее важно то, что для этого не требуется писать сложные алгоритмы и сценарии.
Разработчики Microsoft при создании конвейера, использовали как наглядный пример аналог, задействованный в Linux, но не копировали его, а сделали его максимально удобным и функциональным. Если сравнивать их, общая между ними только характеристика функций, выраженная в фактически непрерывном потоке данных, содержащих миллионы символов.
Сценарии
Сценарии — менее значимые типы команд в PowerShell, являющие собой блоки кодов, сохраняющиеся в отдельном от остальных файле, но так же поддерживающие расширение PS1. Главным их преимуществом служит то, что сохраненные коды не нужно каждый раз набирать в ручном режиме. Не имеет значения, в каком из текстовых редакторов они пишутся, хоть в Word, хоть Paint, принципиально только придерживаться установленного расширения.
В самой оболочке присутствует интегрированная в нее среда для сценариев, воспользовавшись которой можно еще больше упростить их написание. Для их создания, установлены правила оформления текста, перед именем используется символ «$», путь к сохраненному файлу заключается в фигурные скобки, а обращение к свойствам происходит с использованием «.» впереди. Сценарии дополняются аргументами с использованием круглых скобок и комментариями с оформлением символами «#».
Дополнения
Кроме стандартных типов команд и 240 командлетов, содержащихся в PowerShell, в него включено множество дополнений, призванных еще больше упростить работу и расширить функциональные возможности. Список наиболее важных дополнений:
- C WS-Management, одной из опций «Remonting», появляется возможность вызова сценариев и командлетов на удаленных машинах, одной или сразу нескольких. С его помощью отслеживается состояние выполнения команд, по результатам выданным объектами сериализации и структуризации. Дополнительно возможна установка интерактивных сессий.
- С помощью «Фоновых работ», можно перевести вызов команд в асинхронную последовательность. Для запуска используются опции локальной машины, а при желании и сразу нескольких удаленных. Единственное неудобство – использование интерактивных командлетов становится в этом случае невозможным.
- Применяя опции «Модулей» намного проще становится организация сценариев и их помещение в самодостаточные модули. При этом, их коды выполняются в независимом контексте, не оказывая заметного влияния на структуру окружения, ограниченного при организации. Функциональное содержание модулей имеет 3 типа: приватное, публичное и переменное.
- При помощи подмножества «Языков данных» отделяются их определения от исполняемых кодов для сценариев. Благодаря этому, становится возможен импорт в процессе их выполнения локализованных строк, помещающихся в тело сценариев.
- С «Отладкой сценариев» удобнее установка точек прерывания, в теле их самих или в сопутствующих функциях оболочки. Точки прерывания устанавливаются в любом месте в столбцах и строках, для чтения, команд или записи. Их можно также устанавливать и контролировать, при помощи командлетов, имеющих отношение к сценариям.
- Функции «Событирования» направлены на прослушивание, перенаправление, выполнение действий и управление возникающих событий. Данная процедура включает оповещения о любых изменениях состояния объектов, находящихся под управлением. Кроме того, предполагает подписку сценариев на ObjectEvents, с последующей синхронной и асинхронной обработкой.
- Использование «Advanced Functions», упрощает разработку командлетов полноценного образца, при помощи возможностей самой программы и включенных в нее элементов.
- Возможности «Обработки ошибок», позволят использовать разные типы исключений каждого блока (catch) по-отдельности.
Как запустить PowerShell
Дополнительное удобство программы в том, что запускается PowerShell при помощи разных способов, отличающихся в техническом плане, но идентично для всех версий Виндовс, в том числе Windows 10. Благодаря этому, каждый подбирает индивидуальный подход, в зависимости от ситуации. Существует несколько способов запуска.
При помощи «Поиска»
Для этого потребуется кликнуть по соответствующему значку, размещенному на панели задач, или применить комбинацию клавиш «Win + S». В отрывшемся окне, в поисковой строке набрать «powershell», а в выданном результате выбрать «Классическое предложение». Можно также вызвать контекстное меню правым кликом, где воспользоваться «Запуском от имени администратора».
Через меню «Пуск»
Кликом по кнопке «Пуск» открыть список приложений, в сортированной группе озаглавленной «W» выбрать папку с программой. Развернуть ее и кликнуть по приложению в верхней строчке. Здесь также в виде варианта, можно вызвать контекстное меню правой кнопкой мыши и запустить «от имени администратора».
С использованием сочетания клавиш
Этот способ подразумевает предварительное действие, заключающееся в замене командной строки оболочкой «Widows PowerShell» с функцией «Меню Win + X». После этого войти в соответствующее меню сочетанием клавиш, или через контекстное меню правым кликом по кнопке «Пуск», где выбрать нужный пункт в представленном списке.
Через диалог «Выполнить»
Один из простейших способов, с открытием диалогового окна «Выполнить». Для его вызова, применить сочетание клавиш «Win + R», в строке «Открыть» ввести команду с именем программы. Для ее запуска нажать на клавишу «Enter» или кнопку «Ок» на панели окна.
С помощью «Диспетчера задач»
Чтобы открыть диспетчер, применить сочетание клавиш «Ctrl + Shift + Esc», в открывшемся окне, во вкладке «Файл» выбрать вариант «Запуска новой задачи». В новом окне, напротив строки «Открыть», вписать «powershell» и нажать на «Enter». В случае если требуется создание задачи от имени администратора, отметить галочкой соответствующую опцию и подтвердить нажатием по кнопке «Ок».
Через «Проводник»
После его открытия, потребуется указать имя папки или диска, где будет запускаться программа. На вкладке «Файл» выбрать вариант «Запустить Widows PowerShell» и нажать на нужный пункт.
Через системную папку
В поисковой строке ввести адрес программы: «C:\Windows\System32\WindowsPowerShell\v1.0». В открывшемся списке выбрать папку «powershell. exe» и открыть ее двойным левым кликом. Чтобы упростить процесс в будущем, можно создать ярлык файла и закрепить в любом удобном месте: на панели задач, в меню «Пуск», или рабочем столе. При необходимости запуск оболочки будет осуществляться двойным кликом по иконке.
Процедура использования утилиты
При первичном ознакомлении с PowerShell, он представляется непостижимым, как формулы в высшей математике, но это обманчивое впечатление. В действительности, использовать программу достаточно легко, если разобраться в ее основах: принципах работы, в особенностях ввода и выполнения команд. В этом, разные типы несколько отличаются, но принципы и правила остаются общими для всех.
Работа с командлетами
На простом примере, команда, задающаяся как «Get-Help» — это своеобразный справочник утилиты, предоставляющий при вводе общую информацию. Если нужна справка по определенному процессу, например о подключенных дисках, нужно задать команду – «Get-Help Get-PSDrive», и так по любому вопросу, меняя только имя командлета. Для каких либо действий, к примеру, очистки корзины от файлового мусора, обычно используется «Clear-RecycleBin», применяющийся и для более важных задач в обслуживании ПК и для написания скриптов. Но отвечает он и за такой простой процесс, как очистка системных корзин. Прежде нужно указать диск, подлежащий очистке, по принципу: «Clear-RecycleBin C:» для подтверждения действия ввести символ «Y» и нажать на «Enter».
Работа с конвейером
В работе, конвейер чрезвычайно прост и удобен, чем особенно выделяется на фоне других типов команд. Например, если выводить результат Get-Process, содержащий информацию об активных процессах на ПК в командлет Soft-Object, он отсортирует их по дескрипторам. Переведя полученные значения в Where-Object, произойдет фильтрация этих процессов по заданному параметру, к примеру, наименьшего объема страничной памяти. А если и этот результат вывести в Select-Object, он выделит лишь первые 10 процессов, с учетом числа дескрипторов.
Или еще один простой пример, применяющийся для получения информации о самых тяжеловесных файлах, хранящихся на системном диске: Команда Get-ChildItem, открывает каталог для выбора объекта, Sort-Object отсортирует выбранный объект, а Select-Object укажет его нужные свойства.
Работа со сценарием
При создании алгоритмов, часто применяется Windows PowerShell ISE, специально созданный механизм, в том числе и для использования сценариев. В нем, под названием «Безымянный 1.ps1» вводится тело кода. Разберем на простом примере: «WMID WebMoney» в названии задать условно «wmid», сохранить файл в корне диска С. Для запуска потребуется войти в каталог, применяя команду «cd C:\» имя файла должно значиться в таком ключе: «.\wmid». Примечательно, что сценарии запускаются и из командной строки ОС, но для этого нужно изменить путь к нему: «powershell. exe C:\ wmid.ps1». При этом важно помнить, что выполнять сценарии по умолчанию запрещается, для получения разрешения на такие действия, следует задать команду Set-ExecutionPolicy.
Самые полезные командлеты PowerShell
В оболочке собран их внушительный каталог, представленный сотнями команд. Запомнить все эти названия и приложенные к ним свойства, не представляется возможным. Но этого и не нужно делать, большинство их используется крайне редко, а то и вовсе не применимы на практике. Следует обратить внимание лишь на самые важные, практичные, несущие в себе полезные функции.
Наиболее полезные в применении:
- Get-Help – справочник по назначению командлетов и общим свойствам оболочки;
- Update-Help — загрузка и установка обновленных справочных данных;
- Get-Command – поисковик требуемых команд, с авто заполнением строки;
- Get-Alias – отражает установленные псевдонимы, общим списком или с конкретикой;
- Get-PSDrive – представляет запущенные диски и происходящие на них процессы;
- Install-WindowsFeature – ролевой и компонентный установщик;
- Uninstall-WindowsFeature – ролевой и компонентный деинсталлятор;
- Get-History – отвечает за возвращение командных списков, выполненных при входе.
- $hversion – возвращает версию утилиты
Переменные:
- Get-Variable – показывает списком все переменные с учетом их значений;
- New-Variable – используется для настройки ново созданных переменных;
- Set-Variable – устанавливает новые значения, если они не значатся в списке;
- Clear-Variable – деинсталлятор содержания, сохраняющий образ;
- Remove-Variable — деинсталлятор командлетов и их составляющих.
Форматирование:
- Format-List – расширенный справочник;
- Format-Table – выводит таблицу результатов отдельных команд;
- Format-Wide — расширенная таблица по результатам, со свойствами отдельных объектов.
Интернет:
- Enable-NetAdapter – для включения адаптера;
- Rename-NetAdapter – задает новое имя и представление;
- Restart-NetAdapter – используется для перезапуска;
- Get-NetIPAddress – предоставляет данные по конфигурации прокси-сервера;
- Set-NetIPAddress – задает новую конфигурацию прокси-серверу;
- New-NetIPAddress – занимается созданием и настройкой прокси-сервера;
- Remove-NetIPAddress – деинсталлятор прокси-сервера;
- New-NetRoute – используется для внесения дополнительных записей;
- Get-NetIPv4Protocol — предоставляет данные по протоколу IPv4;
- Get-NetIPInterface — отражает свойства и характеристики веб-интерфейса IP.
Элементы:
- Get-Item — принимает элементы по заданному пути;
- Move-Item – для перемещения элементов по другим папкам;
- New-Item – используется для создания и оформления;
- Remove-Item – деинсталлятор отмеченных элементов;
- Get-Location – показывает местонахождение в настоящем времени.
Фоновые задания:
- Start-Job – выполняет запуск;
- Stop-Job – останавливает работу;
- Get-Job – открывает список;
- Receive-Job – предоставляет информацию о результатах;
- Remove-Job – деинсталлятор фоновых задач.
Объекты:
- Measure-Object – используется для расчета числовых агрегирующих параметров;
- Select-Object – для выбора с указанием конкретных свойств;
- Where-Object – отражает условия касательно выборки по значению и свойствам.
Службы и процессы:
- Get-Process – показывает информацию об активных процессах ПК;
- Start-Process – производит запуск на ПК;
- Stop-Process — прекращает работу избранных;
- Get-Service – предоставляет данные об активных службах;
- Restart-Service – осуществляет перезапуск;
- Start-Service – используется для подключения выбранных;
- Stop-Service – ставит на паузу процесс;
- Set-Service – изменяет свойства служб и режим подключения.
Компьютер и система:
- Restart-Computer – используется для перезапуска ОС;
- Checkpoint-Computer — для создания системной восстановительной копии для ПК;
- Restore-Computer – отвечает за запуск восстановленной системы;
- Remove-Computer — деинсталлирует локальный ПК из доменного имени;
- Clear-EventLog – очищает список записей в журнале.
Контент:
- Get-Content – принимает содержимое различных элементов;
- Clear-Content — стирает содержимое, но сохраняет образы;
- Set-Content – используется для перезаписи.
Что такое PowerShell ISE
Это графическая оболочка скриптового языка, идущая в комплекте с утилитой в виде ее приложения, главным образом для пуска независимых консолей. В процессе запуска, поддерживается Юникодом и символическими стандартами, с доступом к закладкам интерфейса основной программы. Разработана она для создания скриптов, редактирования и управления ими, с функцией отслеживания их местонахождения. Кроме этого, умеет работать с текстовыми документами в любом формате и файлами XML, выполнять выделенные фрагменты сценариев, а за счет встроенного редактора, способна обновлять интерфейс, расширяя и дополняя его.
Удобство работы создает цветовая подсветка синтаксиса, что существенно облегчает тестирование на предмет выявления ошибок и несоответствий в кодах. При помощи среды может копировать и менять значительные фрагменты в кодах, запускать отдельные части скриптов. Отмечается, что ISE намного превосходит консоли самой Пауэер Шелл, и вполне способна стать ее заменой.
Удаление программы
Microsoft PowerShell системный компонент, поэтому удалить его, в принципе нельзя. Конечно, при большом желании можно воспользоваться нашей статьей и удалить этот системный компонент, но это может привести к неработоспособности системы, поэтому не рекомендуется это делать.
Хотя стоит заметить, что иногда необходимо удалить Windows PowerShell 1. 0, поскольку операционная система может не обновляться из-за этого элемента. Сделать это можно так:
- Запускаем системный поиск и вводим appwiz.cpl.
- В окне выбираем – Просмотр установленных обновлений.
- Ищем нужный компонент в списке обновлений, обычно это KB928439 и удаляем его.
Windows PowerShell, даже с большой натяжкой нельзя назвать простой и доступной программой, она сложная для понимания, и освоить ее за короткий промежуток времени не получится. Но учитывая тот факт, что создавалась она отнюдь не для программистов, а для начинающих пользователей, не настолько она непостижима, как может показаться. Очевидным преимуществом оболочки является ее удобство и автоматизированный процесс, а все что потребуется – только вникнуть в тонкости.
Windows PowerShell | это… Что такое Windows PowerShell?
Windows PowerShell — расширяемое средство автоматизации от Microsoft, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев. Впервые публично язык был продемонстрирован на Профессиональной конференции разработчиков (англ. Professional Developers Conference, PDC) в сентябре 2003 года под кодовым названием Monad. Версия 1.0 выпущена в 2006 году и сейчас доступна для Windows XP с пакетом обновления 2—3, Windows Server 2003, Windows Vista, и встроена в Windows Server 2008 как необязательный компонент[источник не указан 485 дней].
Windows PowerShell 2.0 был выпущен в составе Windows 7, Windows 8 и Windows Server 2008 R2 как неотъемлемый компонент системы. Кроме того, вторая версия доступна и для других систем, таких как Windows XP SP3, Windows Server 2003 SP2, Windows Vista SP1, Windows Vista SP2 и Windows Server 2008[1].
Windows PowerShell построен на базе Microsoft .NET Framework и интегрирован с ним. Дополнительно PowerShell предоставляет удобный доступ к COM, WMI и ADSI, равно как и позволяет выполнять обычные команды командной строки, чтобы создать единое окружение, в котором администраторы смогли бы выполнять различные задачи на локальных и удалённых системах.
Эти административные задачи обычно выполняются с помощью командлетов (в оригинале cmdlets), которые являются специализированными классами .NET. Пользователь может комбинировать их в скриптах (сценариях), используя различные конструкции, утилиты командной строки и обращения к обычным классам .NET, объектам WMI или COM. Кроме того, можно использовать различные хранилища данных, такие как файловая система или реестр Windows, которые предоставляются PowerShell посредством поставщиков (англ. providers).
Windows PowerShell также предоставляет механизм встраивания, благодаря которому исполняемые компоненты PowerShell могут быть встроены в другие приложения. Эти приложения затем могут использовать функциональность PowerShell для реализации различных операций, включая предоставляемые через графический интерфейс. Этот подход применён в Microsoft Exchange Server 2007 для реализации управляющей функциональности в виде командлетов PowerShell и графических утилит управления в виде оболочек PowerShell, которые вызывают необходимые командлеты. Таким образом, графический интерфейс управления находится поверх промежуточного слоя — PowerShell. Другие приложения Microsoft, включая Microsoft SQL Server 2008, System Center Operations Manager и System Center Data Protection Manager также предоставляют доступ к своим интерфейсам управления через командлеты PowerShell. В будущем все серверные приложения Microsoft на платформе Windows будут использовать PowerShell тем или иным образом[источник не указан 485 дней].
Windows PowerShell включает свою собственную расширяемую справку, доступную (в том числе из командной строки) через командлет Get-Help
.
Содержание
|
Предыстория
Каждая выпущенная версия MS-DOS и Microsoft Windows для персональных компьютеров содержала утилиту, предоставляющую интерфейс командной строки. Это были COMMAND.COM
(в системах, основанных на MS-DOS, включая Windows 9x) и cmd.exe
(в системах семейства Windows NT). Это были обычные интерпретаторы командной строки, имевшие лишь несколько базовых команд. Для других задач требовались отдельные консольные приложения, которые вызывались из этих оболочек. Они также имели язык сценариев (пакетные файлы), при помощи которого можно было автоматизировать различные задачи. Однако эти интерпретаторы не годились для полноценной автоматизации — частично потому, что в них отсутствовали эквиваленты многих операций графического интерфейса, а также из-за слабой функциональности языка сценариев, не позволявшего описывать достаточно сложные алгоритмы. В Windows Server 2003 ситуация была улучшена, однако поддержка сценариев всё ещё считалась недостаточной.
Microsoft пыталась решить некоторые из этих недостатков с помощью Windows Script Host, вышедшего в 1998 году в составе Windows 98, и утилиты для работы с ним из командной строки cscript. exe
. Он интегрируется с Active Script и позволяет писать сценарии на совместимых языках, таких как JScript и VBScript, используя API, предоставляемое приложениями через Component Object Model (COM). Однако у этого решения свои недочёты. Windows Script Host не интегрирован с оболочкой, отсутствует встроенная документация, и он быстро получил репутацию вектора уязвимости[источник не указан 456 дней] после нескольких широко распространившихся компьютерных вирусов, использовавших уязвимости в его модели безопасности. Различные версии Windows также предоставляют командные интерпретаторы специального назначения (такие как netsh.exe
и WMIC) со своими собственными наборами команд. Они не интегрированы с командной оболочкой и не дают возможностей для взаимодействия.
В 2003 Microsoft начала разработку новой оболочки, называемой Monad (также известной как Microsoft Shell или MSH). Monad должен был стать новой расширяемой оболочкой командой строки, со свежим дизайном, который позволял бы автоматизировать весь спектр административных задач. Microsoft опубликовала первую публичную бета-версию Monad 17 июня 2005 года. Вторая и третья бета-версии были выпущены 11 сентября 2005 и 10 января 2006 соответственно. 25 апреля 2006 года было объявлено, что Monad переименован в Windows PowerShell для позиционирования его в качестве значительной части их технологий управления. В это же время была выпущена версия Release Candidate 1 («кандидат на выпуск»). Release Candidate 2 последовал 26 сентября 2006 года. Финальная версия (Release to Web, RTW) была выпущена 14 ноября 2006 года для Windows XP SP2 и Windows 2003. Финальная версия для Windows Vista стала доступна только 30 января 2007 года.
Последний CTP выпуск Windows PowerShell версии 2.0 был выпущен в декабре 2008 года. Финальная версия второй версии PowerShell была выпущена в составе систем Windows 7 и Windows Server 2008 R2 одновременно с их выпуском. Для остальных систем (Windows XP, Windows Server 2003, Windows Vista, Windows 2008), вторая версия PowerShell стала доступна в составе комплекта Windows Management Framework 27 октября 2009 года. Кроме Windows PowerShell второй версии, в этот комплект также входят WinRM версии 2.0 и BITS 4.0 (последний доступен только для Windows Vista и Windows 2008; в Windows 7 и Windows Server 2008 R2 он встроен).
Обзор
Команды, исполняемые в Windows PowerShell, могут быть в форме командлетов, которые являются специализированными классами .NET, созданными с целью предоставления функциональности в PowerShell в виде сценариев PowerShell (.PS1
) или являются обычными исполняемыми файлами. Если команда является исполняемым файлом, то PowerShell запускает её в отдельном процессе; если это командлет, то он исполняется внутри процесса PowerShell. PowerShell предоставляет интерфейс командной строки, в котором можно вводить команды и отображать выводимые ими данные в текстовом виде. Этот пользовательский интерфейс, базирущийся на стандартном механизме консоли Windows, предоставляет настраиваемый механизм автозавершения команд, но не обладает возможностью подсветки синтаксиса, хотя при желании её можно обеспечить[2]. В PowerShell также можно создавать псевдонимы (англ. alias) для командлетов, которые при вызове преобразуются в оригинальные команды. Кроме того, поддерживаются позиционные и именованные параметры для командлетов. При выполнении командлета работа по привязке значений аргументов к параметрам выполняется самим PowerShell, но при вызове внешних исполняемых файлов аргументы передаются им для самостоятельного разбора.
Другое понятие, используемое в PowerShell, — это конвейер (англ. pipeline). Подобно конвейерам в UNIX, они предназначены для объединения нескольких команд путём передачи выходных данных одной команды во входные данные второй команды, используя оператор |
. Но в отличие от аналога в UNIX, конвейер PowerShell является полностью объектным, то есть данные между командлетами передаются в виде полноценных объектов соответствующих типов, а не как поток байтов. Когда данные передаются как объекты, содержащиеся в них элементы сохраняют свою структуру и типы между командлетами, без необходимости использования какой либо сериализации или посимвольного разбора данных. Объект также может содержать некоторые функции, предназначенные для работы с данными. Они также становятся доступными для получающего их командлета. Вывод последнего командлета в конвейере PowerShell автоматически передаёт на командлет Write-Host
, который создаёт текстовое представление объектов и содержащихся в них данных и выводит его на экран.
Так как все объекты PowerShell являются объектами .NET, они содержат метод .ToString()
, возвращающий текстовое представление данных объекта. PowerShell использует этот метод для преобразования объекта в текст. Кроме того, он позволяет указать правила форматирования, так что текстовое представление объектов может быть настроено. Однако, с целью поддержания совместимости, если в конвейере используется внешний исполняемый файл, то он получает текстовый поток, представляющий объект, и не интегрируется с системой типов PowerShell.
Расширенная система типов (англ. Extended Type System, ETS) PowerShell базируется на системе типов . NET, но реализует некоторые дополнения. Например, она позволяет создавать различные представления объектов, отображая лишь некоторые из их свойств и методов, а также применять специальное форматирование и механизмы сортировки. Эти представления привязываются к оригинальным объектам с помощью конфигурационных файлов в формате XML.
Командлеты
Командлеты (англ. cmdlets) — это специализированные команды PowerShell, которые реализуют различную функциональность. Это встроенные в PowerShell команды. Командлеты именуются по правилу Глагол-Существительное
, например Get-ChildItem
, благодаря чему их предназначение понятно из названия. Командлеты выводят результаты в виде объектов или их коллекций. Дополнительно, командлеты могут получать входные данные в такой же форме и, соответственно, использоваться как получатели в конвейере. Хотя PowerShell позволяет передавать по конвейеру массивы и другие коллекции, командлеты всегда обрабатывают объекты поочередно. Для коллекции объектов обработчик командлета вызывается для каждого объекта в коллекции по очереди.
Экземпляры объектов создаются в PowerShell и запускаются им при вызове. Командлеты наследуются от Cmdlet
или от PSCmdlet
, причём последний используется тогда, когда командлету необходимо взаимодействовать с исполняемой частью PowerShell (англ. PowerShell runtime). В этих базовых классах оговорены некоторые методы — BeginProcessing()
, ProcessRecord()
и EndProcessing()
, как минимум один из которых реализация командлета должна перезаписать для предоставления своей функциональности. Каждый раз при запуске командлета эти методы вызываются PowerShell по очереди. Сначала вызывается BeginProcessing()
, затем, если командлету передаются данные по конвейеру, ProcessRecord()
для каждого элемента, и в самом конце — EndProcessing()
. Класс, реализующий Cmdlet
, должен иметь один атрибут . NET — CmdletAttribute
, в котором указываются глагол и существительное, составляющие имя командлета. Популярные глаголы (рекомендуется использовать только их[источник не указан 456 дней]) представлены в виде перечисления (англ. enum).
Реализации командлетов могут вызывать любые доступные .NET API и могут быть написаны на любом языке .NET. PowerShell также предоставляет некоторые дополнительные API, такие как WriteObject()
, которые необходимы для доступа к специфичной для PowerShell функциональности, например для вывода результирующих объектов в конвейер. Командлеты могут использовать API для доступа к данным напрямую или воспользоваться инфраструктурой поставщиков (англ. provider) PowerShell, которые позволяют обращаться к хранилищам данных через уникальные пути. Хранилища данных представляются через буквы дисков и иерархическую структуру внутри них (директории). Windows PowerShell поставляется с поставщиками для файловой системы, реестра Windows, хранилища сертификатов, а также для псевдонимов команд, переменных и функций. Другие приложения могут добавлять свои командлеты и поставщики для доступа к своим хранилищам данных.
В PowerShell 2.0 была добавлена возможность создания командлетов на самом PowerShell, без использования .NET языков.
Конвейер
В PowerShell, как и в оболочках UNIX/Linux, присутствует конвейер. Этот конвейер служит для передачи выходных данных одного командлета во входные данные другого командлета. В частности, пользователь может вывести результаты командлета Get-Process
в командлет Sort-Object
(например, для сортировки процессов по дескрипторам), затем в Where-Object
, чтобы отфильтровать процессы, которые, например, занимают меньше 1 МБ страничной памяти, и в конце концов передать результаты в командлет Select-Object
, чтобы выбрать только первые 10 процессов (по количеству дескрипторов). Концепция конвейера изначально используется в UNIX-подобных системах (см. Конвейер (UNIX)), концепция PowerShell отличается от данного. В UNIX-подобных системах вывод одной команды передаётся на следующий этап конвейера в бинарной форме, то есть являет собой фактически поток данных. Пример: dd if=/dev/zero bs=1M count=1M | bzip2 -z9 -c > ex.bz2
, где поток «нулей» блоками по 1 МБ в количестве 1-го миллиона раз (из устройства /dev/zero
) командой dd
(копирования специальных файлов) передаётся на ввод команды Bzip2
, которая их сжимает максимально возможно (с точки зрения алгоритма сжатия bzip2
, опция -z9
) и результирующий поток передаёт на stdout
(опция -с
), который в свою очередь перенаправляется в файл ex.bz2
. Результатом выполнения такой относительно короткой команды станет создание архива, внутри которого будет поток нулевых байтов размером 1 терабайт. Сам процесс создания такого архива применяет в данном случае 2 последовательных конвейера.
Реализовать подобную функциональность и гибкость в Windows средствами самой Windows долгое время было практически невозможным[источник не указан 456 дней]. Заделать данную брешь в средах Windows и был фактически призван PowerShell, являющийся неким подобием UNIX shell[источник не указан 456 дней].
Сценарии
PowerShell включает язык сценариев с динамическими типами, на котором можно реализовывать сложные операции с использованием командлетов. Язык сценариев поддерживает переменные, функции, конструкции ветвления (if-then-else
) циклы (while
, do
, for
и foreach
), структурированную обработку ошибок и множество других возможностей, включая интеграцию с .NET. Переменные в PowerShell обозначаются префиксом $
перед именем; им может быть присвоено любое значение, включая вывод командлетов. Хотя сам язык не строго типизирован, внутри переменные сохраняются с их типами, которые могут быть базовыми типами (англ. primitive types) или объектами. Строки могут быть заключены в одиночные кавычки или в двойные кавычки: при использовании двойных кавычек переменные, содержащиеся в строке, будут заменены их значениями. В соответствии с синтаксисом переменных, если путь к файлу помещен в фигурные скобки с предшествующим знаком доллара (то есть ${C:\foo.txt}
), то это будет ссылкой на содержимое файла. Всё, что будет назначено такой переменной, будет записано в файл, и наоборот — при обращении к её содержимому будет выдано содержимое файла.
К свойствам и методам объекта можно обращаться, используя точку (.
), как в синтаксисе C#. PowerShell предоставляет специальные переменные, такие как $args
, содержащую массив всех неименованных аргументов командной строки, переданных функции, или $_
, ссылающуюся на текущий объект в конвейере и других конструкциях. В PowerShell также присутствуют массивы и ассоциативные массивы. Кроме того, PowerShell автоматически вычисляет арифметические выражения, введённые в командной строке, и понимает популярные аббриевиатуры, такие как GB (ГБ), MB (МБ) и KB (КБ).
В PowerShell можно создавать собственные функции, принимающие параметры с помощью ключевого слова function
. Популярная[источник не указан 456 дней] проблема для многих начинающих — то, что функции принимают аргументы, разделённые не запятыми, а пробелами (как утилиты командной строки или командлеты):
<function> <param1> <param2>
: Вызывает функцию с двумя аргументами.
Эти аргументы могут быть привязаны к параметрам, указанным в объявлении функции. Также к ним можно обратиться через массив $args
.
<function>(<param1>, <param2>)
: Вызывает функцию с одним аргументом, который является массивом из двух элементов.
PowerShell позволяет вызывать любые методы .NET, заключив их пространство имён в квадратные скобки ([]
), и затем используя пару двоеточий (::
) для указания статического метода. Например [System.Console]::WriteLine("PowerShell")
. Объекты создаются с помощью командлета New-Object
, добавлять к ним новые свойства можно используя командлет Add-Member
.
Для обработки ошибок PowerShell предоставляет механизм, основанный на .NET. В случае ошибки выдаются объекты, содержащие информацию об ошибке (объект Exception
), которые перехватываются ключевым словом trap
. Однако поведение при возникновении ошибок настраивается. Так, можно настроить PowerShell, чтобы в случае ошибки он молча продолжал выполнение без перехвата ошибки. Во второй версии PowerShell также была добавлена конструкция Try Catch Finally
.
Сценарии, написанные в PowerShell, можно сохранять между сессиями в файлах .PS1
. Затем можно использовать весь сценарий или индивидуальные функции из него. Сценарии и функции используются подобно командлетам, то есть они могут быть командами в конвейере, им можно передавать параметры. Объекты могут прозрачно передаваться между сценариями, функциями и командлетами в конвейере. Однако выполнение сценариев PowerShell по умолчанию запрещено, и его надо включить с помощью командлета Set-ExecutionPolicy
. Сценарии PowerShell могут быть подписаны цифровой подписью для проверки их целостности.
PowerShell 2.0
Microsoft выпустила PowerShell 2.0 в составе Windows 7 и Windows Server 2008 R2. Windows PowerShell 2.0 предустановлен в этих системах. Исключением является режим установки Windows Server 2008 R2 в режиме Core, где PowerShell 2.0 можно доустановить вручную. Для более старых платформ он доступен в составе Windows Management Framework. PowerShell 2.0 вносит некоторые изменения в язык сценариев и API для встраивания, в дополнение к новым 240 командлетам.
Неполный список новых возможностей, включённых в PowerShell 2.0:
- PowerShell Remoting. Используя WS-Management, PowerShell 2.0 позволяет вызывать сценарии и командлеты на удалённых машинах (в том числе и на нескольких одновременно), отслеживать состояние их выполнения и получать результаты в виде объектов (через сериализацию-десериализацию). Также возможно устанавливать интерактивные сессии и сессии с ограниченной функциональностью.
- Фоновые работы. Возможность вызывать последовательности команд асинхронно. Работы можно запускать на локальной машине или на нескольких удалённых машинах. Работы не могут использовать интерактивные командлеты.
- Транзакции. Позволяют разработчикам командлетов и поставщиков реализовывать транзакционные операции. PowerShell 2.0 включает командлеты для инициализации, подтверждения и отката транзакций и возможности для управления транзакциями и использования их в командлетах и поставщиках.
- Advanced Functions. Возможность разрабатывать полноценные командлеты, используя только сам PowerShell.
- SteppablePipelines. Позволяет пользователю контролировать вызов функций
BeginProcessing()
,ProcessRecord()
иEndProcessing()
при вызове командлета. - Модули. Позволяют авторам сценариев и администраторам организовывать сценарии PowerShell и помещать их в самодостаточные модули. Код из модуля выполняется в своем собственном, независимом контексте и не влияет на окружение вне модуля. Используя сценарий, модули могут объявлять ограниченное окружение. Модули могут содержать публичные и приватные функции и переменные.
- Язык данных. Подмножество языка PowerShell, которое позволяет отделять определения данных от исполняемого кода сценариев и даёт возможность импортировать в сценарий локализованные строки в процессе выполнения.
- Отладка сценариев. Возможность устанавливать точки прерывания (англ. breakpoints) в сценариях или функциях PowerShell. Точки прерывания могут быть установлены на строки, столбцы, команды или операции чтения и/или записи переменных. Присутствуют командлеты для установки и контроля точек прерывания в сценариях.
- Eventing (событирование). Эта возможность позволяет слушать, перенаправлять, и выполнять действия при возникновении событий управления или системы. Благодаря событированию хосты PowerShell могут быть оповещены о изменениях состояния в управляемых объектах. Также позволяет сценариям подписываться на ObjectEvents, PSEvents и WmiEvents и обрабатывать их синхронно и асинхронно.
- Windows PowerShell Integrated Scripting Environment (ISE). PowerShell 2.0 включает графическую оболочку для языка, в которую входят встроенный отладчик, подсветка синтаксиса, автозавершение команд. Оболочка позволяет запускать несколько независимых консолей PowerShell с полной поддержкой Юникода в интерфейсе с закладками. Благодаря поддержке удалённого выполнения некоторые консоли могут выполняться и на других компьютерах. Кроме того, ISE позволяет выполнять только выделенные части сценариев, содержит встроенный редактор и позволяет расширять и дополнять свой интерфейс с помощью PowerShell.
- BITS Transfer — встроенная поддержка передачи файлов по сети с приоритизацией, многопоточностью, возобновлением и асинхронной работой на основе технологии Background Intelligent Transfer Service.
- Множество новых командлетов, включая, например,
Out-GridView
, позволяющий вывести результаты конвейера в графическую таблицу (на основе WPF), с возможностями сортировки и мгновенного поиска. - Новые операторы
-Split
,-Join
и оператор подстановки (@
). - Обработка ошибок с
Try-Catch-Finally
. В отличие от других .NET языков, в PowerShell можно указывать несколько типов исключений для одного блокаcatch
. - Блочные комментарии. PowerShell 2.0 поддерживает блочные комментарии (плюс к уже имеющимся построчным
#
) с использованием<#
и#>
в качестве ограничителей. - Новые API добавили разные возможности, от большего контроля над парсером PowerShell до способности создавать ограниченные сессии (англ. restricted runspace), в которых можно выполнять лишь ограниченный набор инструкций и команд PowerShell.
Сравнение командлетов с аналогичными командами
В следующей таблице содержится выборка командлетов, поставляющихся с PowerShell, с приведением максимально похожих команд из других широко известных оболочек командной строки.
Следует отметить, что данная таблица приводится для поверхностного ознакомления, она не охватывает всех возможностей представленных оболочек.
Windows PowerShell (Cmdlet) | Windows PowerShell (Alias) | cmd.exe / COMMAND.COM (MS-DOS, Windows, OS/2, etc.) | Bash (Unix, BSD, Linux, Mac OS X и т. п.) | Описание |
---|---|---|---|---|
Get-Location | gl, pwd | cd[3] | pwd | Отображает текущий рабочий каталог |
Set-Location | sl, cd, chdir | cd, chdir | cd | Меняет текущий каталог |
Clear-Host | cls, clear | cls | clear | Очищает экран[4] |
Copy-Item | cpi, copy, cp | copy | cp | Копирует один или несколько файлов или дерево директорий (в PowerShell также можно копировать объекты других поставщиков данных) |
Get-Help | help, man | help | man | Справка по командам |
Remove-Item | ri, del, erase, rmdir, rd, rm | del, erase, rmdir, rd | rm, rmdir | Удаляет файл/каталог (или другой элемент в поставщиках данных PowerShell). |
Rename-Item | rni, ren | ren, rename | mv | Переименовывает файл/каталог |
Move-Item | mi, move, mv | move | mv | Перемещает файл/каталог в новое местоположение |
Get-ChildItem | gci, dir, ls | dir | ls | Выводит все файлы/каталоги в текущем каталоге |
Write-Output | echo, write | echo | echo | Выводит строки, переменные на стандартный вывод |
Pop-Location | popd | popd | popd | Изменяет текущий каталог на тот, который был последним помещён в стек |
Push-Location | pushd | pushd | pushd | Помещает текущий каталог в стек |
Set-Variable | sv, set | set | set | Установка значения переменной/создание переменной |
Get-Content | gc, type, cat | type | cat | Получает содержимое файла |
Select-String | find, findstr | grep | Выводит строки, подходящие под условие | |
Get-Process | gps, ps | tlist,[5] tasklist[6] | ps | Выводит все запущенные процессы |
Stop-Process | spps, kill | kill,[5] taskkill[6] | kill | Останавливает запущенный процесс |
Tee-Object | tee | n/a | tee | Передаёт входные данные в файл или переменную, затем передаёт их дальше по конвейеру |
См.
также
- Сравнение командных оболочек
- PowerShell ISE
Примечания
- ↑ Описание Windows Management Framework
- ↑ Realtime Syntax Highlighting in PowerShell Console » PowerShell и другие скрипты
- ↑ cd без параметров выводит текущий каталог.
- ↑ Clear-Host реализован как предопределённая функция PowerShell.
- ↑ 1 2 Available in Windows NT4, Windows 98 Resource Kit, Windows 2000 Support Tools
- ↑ 1 2 Available in Windows XP Professional Edition and later
Литература
- Попов А.В. Введение в Windows PowerShell. — СПб.: БХВ-Петербург, 2009. — С. 464. — ISBN 978-5-9775-0283-2
Ссылки
- Обучающие ресурсы по Windows PowerShell
- Центр загрузки установочного пакета Windows PowerShell 1.0 для системы Windows Vista
- Доклад о нововведениях в PowerShell 2. 0
- Доклад о регулярных выражениях в Windows PowerShell
- Доклад о возможностях PowerShell и основах написания сценариев
- Windows Management Framework (включающий PowerShell 2.0, WinRM 2.0 и BITS 4.0) для Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008
- Блог «PowerShell и другие скрипты» (рус.)
- «Блог Бешкова Андрея из Microsoft, о Powershell» (рус.)
- «Блог о Powershell и не только» (рус.)
- Бесплатная русская книга о PowerShell (рус.)
- Вторая бесплатная английская книга о PowerShell (англ.)
- Веб-узел Windows PowerShell (англ.)
- Капитан PowerShell и администрирование будущего (рус.)
- Могучий шелл
- Виртуальная лаборатория «Creating Windows PowerShell Script Cmdlets»
- PowerShell 2.0 RTM доступен для всех версий Windows
PowerShell Работа, использование и преимущества
PowerShell — это инструмент с открытым исходным кодом, основанный на интерфейсе командной строки (CLI), который позволяет разработчикам, ИТ-администраторам и специалистам DevOps автоматизировать задачи и конфигурации с помощью кода. В этой статье подробно объясняется работа PowerShell и обсуждаются варианты его использования и преимущества для пользователей.
Содержание
- Что такое PowerShell?
- Как работает PowerShell?
- Почему используется PowerShell?
- 12 основных преимуществ PowerShell
Что такое PowerShell?
PowerShell — это инструмент с открытым исходным кодом на основе интерфейса командной строки (CLI), который позволяет разработчикам, ИТ-администраторам и специалистам DevOps автоматизировать задачи и конфигурации с помощью кода.
PowerShell — это бифункциональный атрибут, основанный на технологии Microsoft .NET. PowerShell можно использовать как оболочку с открытым исходным кодом или как язык сценариев. PowerShell используется в качестве оболочки для управления компьютером с помощью команд из интерфейса командной строки, связанного с операционной системой. Интерфейс командной строки является еще одним предпочтением взаимосвязи помимо графического пользовательского интерфейса (GUI), который используется для передачи команд от пользователя к операционной системе.
С помощью этой функциональности оболочки можно использовать PowerShell для автоматизации процессов, требующих повторения. Это облегчает работу и снижает вероятность ошибок. Кроме того, каждую командную строку можно легко воспроизвести, когда это необходимо, поскольку они всегда сразу же сохраняются.
В качестве языка сценариев PowerShell представляет собой форму языка программирования, которая используется для передачи инструкций от родительского программного обеспечения другому программному обеспечению. В отличие от других языков программирования, таких как Ruby, Python и т. д., языки сценариев, такие как PowerShell, по-разному интерпретируются для машинного кода.
Команды PowerShell интерпретируются построчно интерпретатором, а не компилятором. Эта функция позволяет улучшить функциональность родительского программного обеспечения, автоматизировать задачи, извлекать данные из наборов данных, настраивать управление и т. д.
Подробнее: Что такое жизненный цикл DevOps? Определение, ключевые компоненты и рекомендации по управлению
Джеффри Сновер создал PowerShell, но с первоначальным названием Monad. В официальном документе, выпущенном в августе 2002 года, Джеффри сказал, что PowerShell необходимо разработать, поскольку структура Windows не позволяет использовать инструменты Unix. Monad должен был работать как расширяемый интерфейс командной строки (CLI) с новым дизайном, который может поддерживать инструменты Unix.
Впервые это было проиллюстрировано в октябре 2003 года на конференции по профессиональному развитию в Лос-Анджелесе. За этим последовала частная бета-версия, затем три публичных бета-версии в июне 2005 г., сентябре 2005 г. и январе 2006 г. соответственно.
В апреле 2006 г. название Monad было изменено на Windows PowerShell. Это претерпело пять различных изменений; к 2016 году была запущена Windows PowerShell версии 5.1. Ограничение этих версий заключается в том, что пользователи не могут использовать их в других операционных системах, таких как Linux и Mac.
В качестве решения в 2016 году Windows PowerShell стала программой с открытым исходным кодом. Это шестая версия Windows PowerShell, но она изменила свое название на PowerShell core и является программой с открытым исходным кодом. Эту версию можно использовать в macOS, Ubuntu и CentOS, поскольку она работает на .NET Core.
Проект PowerShell процветает для Windows, так как программа по-прежнему демонстрирует все важные пункты манифеста 2002 года. Microsoft и ИТ-сообщество с открытым исходным кодом поддерживают программу.
Подробнее: Что такое DevOps? Определение, цели, методология и рекомендации
Как работает PowerShell?
Как правило, PowerShell больше похож на язык программирования, чем на программу командной строки, поскольку он был построен на платформе .NET. Power shell работает с объектами; на самом деле все в PowerShell является объектом. Эти объекты представляют атрибуты (свойства) или инструкции (методы). Их можно даже сделать непрерывными для работы через программу в качестве ввода или вывода. PowerShell манипулирует объектами с помощью четырех различных типов команд:
1.
Командлеты
Командлеты, произносимые как command-lets, являются основными однофункциональными командами PowerShell. Если PowerShell — это абзац, командлеты — это буквы каждого слова в разделе. Их можно использовать по отдельности для выполнения одной функции и в сочетании для выполнения более важных функций. Обратите внимание, что каждый командлет по-прежнему работает как отдельная функция, внося свой вклад в выходные данные командлета в объединенной функции.
Однако командлеты не написаны в PowerShell. Они написаны на другом языке, скомпилированы и доступны в PowerShell. Командлеты — это важная команда в PowerShell, так как ограничение их функций зависит от творчества разработчика. Разработчики и инженеры DevOps могут использовать «конвейеры» для передачи выходных данных командлета во входные данные другого командлета в виде объекта.
2. Функции PowerShell
Функции — это одна из многих команд, используемых для выполнения кода в PowerShell. В отличие от командлетов, функции написаны на языке PowerShell. Они представляют собой последовательность инструкций, которые формируются и должны выполняться простым их вызовом. Его ввод — это параметры, но вывод может либо отображаться на экране пользователя, либо передаваться другой функции или вводу командлета.
Power Shell имеет две функции: базовую и расширенную. Базовая функция — это простейшая форма функции, используемой в PowerShell. С базовыми функциями нет встроенных функций унаследованных функций. Есть только набор фигурных скобок, содержащих тело функции. Расширенные функции — это функции, которые имеют свойства базовой функции в качестве ядра, но имеют дополнительные возможности. Эти функции содержат встроенные функции, которые делают его более функциональным.
3. Сценарии PowerShell
Сценарии PowerShell записываются с помощью командлетов. Эти скрипты используются для создания автоматизации для различных задач. В сценарии PowerShell есть три типа команд. Команда «get» — первая, используемая для извлечения данных из файловой системы. Команда «set» используется для редактирования информации о компонентах Windows. Это включает в себя присвоение свойств различным компонентам. Команда «удалить» используется для полного удаления операций. Сценарии PowerShell уменьшают сложность кода при написании кода и других случаях использования автоматизации.
4. Исполняемые команды
Исполняемые команды — это команды, используемые для запуска исполняемых файлов. Исполняемые файлы имеют расширение .exe и являются программными компонентами Microsoft Windows. Для запуска файлов .exe используются три команды. Первый — с командой «Invoke-expression». Это, пожалуй, самый популярный метод запуска этих файлов.
Вторая команда — командлет «start-process». Эта команда запускает более одного процесса на вашем устройстве, но дает тот же результат, что и первая команда. Третий вариант — ввести «.\» перед именем файла. Это самый простой способ, но все альтернативы запускают файл .exe.
Для чего используется PowerShell?
Как уже упоминалось, PowerShell — это атрибут с двойной функцией. Однако две основные функции PowerShell включают в себя больше модальностей, и эти модальности (или варианты использования) являются причинами растущей популярности PowerShell.
Почему используется PowerShell?
1. Включение автоматизации задач
Первая из этих причин — автоматизация задач в DevOps. В качестве языка сценариев PowerShell в основном используется для создания автоматизации. Автоматизация охватывает все варианты использования PowerShell. Автоматизация выполняется на других языках сценариев, но в основном на PowerShell из-за уникальной системы форматов. PowerShell также является лучшим вариантом, поскольку программа расширяется функциями, классами, командлетами и модулями.
2. Повышение доступности данных
Еще одна причина популярности PowerShell — доступность данных. Значительная часть вариантов использования PowerShell — административная деятельность. В больших компьютерных сетях многие службы работают независимо и контролируются центральным ИТ-администратором. PowerShell предлагает ИТ-администраторам простой доступ к различным хранилищам данных сетевых служб, таких как файловые системы или реестры.
3. Управление «инфраструктурой как кодом»
В качестве третьей причины PowerShell использует структуру управления, которая позволяет пользователям управлять инфраструктурой своей компании с помощью конфигурации как кода. Эта структура называется Desired State Configuration (DSC). Менеджеры или ИТ-администраторы получают навыки работы с PowerShell, чтобы знать, как передавать или извлекать модели конфигурации в PowerShell для плавной компоновки по мере необходимости. Им также необходимы эти навыки для принудительного применения параметров конфигурации, получения повторяемых развертываний и создания декларативных конфигураций.
4. Упрощение удаленных команд
Наконец, PowerShell имеет такое широкое распространение и варианты использования благодаря своей способности облегчать удаленные команды. Удаленное использование — это новая золотая лихорадка и программное обеспечение или инструменты, которые позволяют удаленной работе завоевывать широкую популярность. С помощью PowerShell администраторы могут выполнять удаленные операции в нескольких системах. Это возможно с помощью инструментария управления Windows и протокола управления WS.
Подробнее: 10 лучших инструментов автоматизации DevOps в 2021 г.
12 основных преимуществ PowerShell
Существуют другие оболочки и множество языков сценариев, но PowerShell как отдельный компонент имеет преимущества, которые делают его «выборным». Вот основные преимущества PowerShell для пользователей:
Преимущества Powershell
1. Расширяемая система форматирования
Используя PowerShell, пользователь может легко форматировать вводимые данные и получать вывод так, как он хочет. PowerShell предлагает три метода форматирования. Можно легко манипулировать каждым методом для любой настройки, необходимой пользователю.
Первый метод форматирования — «для всего формата». В этом методе пользователь может отображать только одно свойство объекта. Это можно использовать для заполнения столбцов таблицы или составления списков. Другой метод — «формат-список». Этот метод позволяет пользователям отображать свойства объектов в виде списка, где каждое свойство находится на новой строке. На третьей стороне игральной кости расположена «таблица форматов». Этот метод позволяет пользователям легко представить выходные данные в виде таблицы. Существуют такие параметры, как «Autosize», «wrap» и «groupby», которые можно использовать для организации столбцов таблицы.
2. Встроенные форматы данных
Форматы данных поддерживают PowerShell, который можно использовать для хранения и передачи данных, а также для того, чтобы сделать данные удобочитаемыми для человека и машиночитаемыми. Этими форматами данных являются значения, разделенные запятыми (CSV), нотация объектов JavaScript (JSON) и расширяемый язык разметки (XML). Формат CSV — это встроенный формат данных, в котором данные таблицы хранятся в виде обычного текста. В этом формате каждый файл отделяется от другого запятой.
Формат JSON используется для немедленной связи между браузером и клиентом. Это открытый стандартный формат, а также удобочитаемый формат. Если информация предоставляется из браузера, ее можно преобразовать в данные PowerShell с помощью команд «Invoke-WebRequest» или «Invoke-RestMethod». Формат XML также является машиночитаемым и удобочитаемым для человека. Он используется для получения данных с веб-страницы, их редактирования и отправки обратно. Он также используется для настройки производительности приложений в PowerShell.
3. Расширенная система типов
В PowerShell существует расширенная система типов (ETS), которую разработчики сценариев и командлетов могут использовать для управления объектами .NET. Эта система выполняется с использованием объекта PSObject. Можно использовать объект PSObject для расширения типов объектов двумя способами. В первом методе объект PSObject показывает различные представления определенных типов объектов. Это называется адаптированным видом.
Во втором методе объект PSObject предоставляет средства добавления элементов в существующий объект. Эти новые члены расширяют базовый объект (начальный объект, над которым работают), предоставляя ему дополнительную информацию, которая может быть полезна при написании сценариев.
4. Безопасный механизм сценариев
PowerShell передает безопасность в руки пользователя с помощью функции управления конфигурацией. Эта функция позволяет пользователям решать, какие сценарии запускать при визуальном просмотре. Учитывая, что вредоносные скрипты практически незаметны визуально, в помощь пользователям существуют автоматизированные политики безопасности.
PowerShell использует политику выполнения в качестве одной из своих стратегий безопасности. Эта политика выполнения определяет условия, при которых PowerShell будет выполнять определенные файлы конфигурации и сценарии. Эта политика используется на платформе Windows, но ее можно настроить на различных компьютерах и устройствах с помощью параметра групповой политики.
Однако эта политика активна только по решению пользователя. Будучи активным, PowerShell запускает только сценарии, авторизованные по идентифицируемому имени. Это справедливый выбор против запуска вредоносных скриптов на вашем компьютере, которые могут позволить проникнуть киберугрозам.
5. Самостоятельная разработка
PowerShell позволяет каждой команде в Exchange самостоятельно создавать свои командлеты. Это существенное преимущество перед другими вариантами. Эта модель «самообслуживания» имеет решающее значение, поскольку она позволяет разработчикам управлять своими функциями, даже когда они пишут свои функции.
Это приводит к лучшему управлению и, в свою очередь, к качеству продукции. Это связано с тем, что продукты наиболее выгодны, когда команды компонентов «отвечают» за их функции. Это гарантирует пользователям хорошо структурированную функцию. Это также ускоряет сборку, поскольку можно заранее протестировать функцию с реальными кодами. Это устраняет узкие места в создании функций и сценариев.
Подробнее: План развития DevOps: полное руководство из 7 шагов
6. Согласованный API
Известно, что API-интерфейсы, такие как инструментарий управления Windows (WMI) и объектная модель компонентов (COM), используемые в Windows, несовместимы или неполны. Это делает их неэффективными при передаче запросов в браузер и из него.
Однако PowerShell — это на 100% комплексный и согласованный API, который используют сторонние компании. Это REST API из Power Shell. Он активируется с помощью командлета Invoked-RestMethod. Эта активация представляет собой просто запрос через HTTPS или HTTP. API будет отправлен для получения данных через URL-адрес.
7. Простая автоматизация
PowerShell использует простой однофункциональный инструмент командной строки для выполнения задач. В качестве однофункционального инструмента командлеты можно использовать по отдельности или комбинировать для решения сложных задач. PowerShell поставляется с более чем девяностою основными командлетами. При необходимости разработчик может создать дополнительные командлеты. Можно также поделиться этими самостоятельно разработанными командлетами с другими пользователями, поскольку PowerShell — это функция с открытым исходным кодом. Это позволяет разработчикам легко создавать автоматизацию для решения повторяющихся задач.
Знание создания этих командлетов дает разработчику преимущество перед другими. Это преимущество наборов PowerShell делает их пользователей «за выбор» в различных настройках.
8. Компонуемость между продуктами
PowerShell имеет отличную модель компоновки между продуктами, что делает ее подходящей для нескольких служб и продуктов. Это означает, что PowerShell может использоваться для разных служб и по-прежнему контролироваться одним ИТ-администратором. Это делает PowerShell функциональным в сетях, где различные службы зависят или независимы друг от друга, например в корпоративной сети.
Подробнее: Инженер DevOps: описание работы, ключевые навыки и зарплата в 2022 году
9.
Легкий доступ к информации
для доступа к данным. Это связано с тем, что PowerShell построен на платформе Microsoft.NET. Эта уникальная функция дает ИТ-специалистам доступ к автоматизации и удаленному управлению каждым ПК с Windows в корпоративной сети. С помощью одной строки кода командной строки ИТ-администраторы могут получить полную информацию и контроль над каждой файловой системой в своей сети.
10. Управление корпоративной сетью
Несмотря на то, что веб-портал администрирования Office 365 является центральной станцией управления для корпоративного Microsoft Office 365, в PowerShell есть много полезных команд администрирования, отсутствующих в последнем. Примером команды является параметр по умолчанию для установки пароля. Параметры на веб-портале администратора позволяют либо всем пользователям регулярно менять пароли, либо ни одному пользователю не менять свой пароль. Используя PowerShell, ИТ-администратор может создать систему двухфакторной аутентификации (2FA), чтобы пользователи не могли регулярно менять пароли.
11. Возможность обнаружения
Одной из очень полезных функций PowerShell являются командлеты Get-command. С помощью этой команды конечные пользователи и программисты могут открыть для себя целый набор команд и функций, доступных в PowerShell. Get-command создает список всех командлетов и функций, которые можно найти на этом компьютере во время запроса. Этим командлетам также можно присваивать псевдонимы или короткие формы, которые можно легко найти с помощью псевдонимов PowerShell. Это помогает пользователям в ежедневном использовании программы независимо от опыта или базы знаний.
12. Информация о сертификационных экзаменах Microsoft
Хотя большинство может не считать это преимуществом, для некоторых это остается важным фактором. Microsoft недавно добавила вопросы, относящиеся к PowerShell, к своим сертификационным экзаменам. Хотя они могут не требовать от вас знания полного синтаксиса каждой команды, вы сможете увидеть использование разных команд в разных случаях. Таким образом, для тех, кто планирует сдать сертификационный экзамен Microsoft Azure DevOps, использование PowerShell вместо других программ может быть лучшим выбором.
Подробнее: 10 лучших сертификатов и курсов DevOps в 2022 году
Начало работы с PowerShell
Существует несколько способов начать работу с PowerShell, и этот процесс намного проще, если вы уже используете операционную систему Windows. В Windows 11 встроено приложение PowerShell, доступ к которому можно получить, просто введя его в строку поиска. ИТ-администраторы также могут изучить платформу PowerShell Integrated Scripting Environment (ISE), которую можно установить отдельно.
PowerShell ISE — это приложение с графическим интерфейсом, упрощающее проверку, отладку и выполнение сценариев без усложнения кода. По мере роста популярности этого инструмента знание PowerShell может помочь упростить задачи ИТ и DevOps и снизить зависимость от сторонних инструментов для большего контроля.
Помогла ли вам эта статья понять, что такое PowerShell и как он работает? Сообщите нам по телефону LinkedIn Открывает новое окно , Twitter Открывает новое окно 04 Facebook Откроется в новом окне . Мы хотели бы услышать от вас!
БОЛЬШЕ О DEVOPS
- 10 лучших инструментов CI/CD в 2022 году
- Что такое микросервисы? Определение, примеры, архитектура и лучшие практики на 2022 год
- Что такое бессерверное? Определение, архитектура, примеры и приложения
- Инженер по надежности объектов: описание работы, ключевые навыки и зарплата в 2022 году
- Что такое DevSecOps? Определение, конвейер, структура и лучшие практики на 2022 год
Что такое Windows PowerShell?
Windows PowerShell — это инструмент автоматизации задач, разработанный Microsoft, чтобы помочь администраторам снизить нагрузку. Он помогает автоматизировать простые задачи и процессы в Windows, помогая вам сосредоточиться на работе, требующей большей сложности и творчества.
Хотя многие люди видели и использовали командную строку, меньше людей слышали о PowerShell. В этой статье мы рассмотрим, как именно PowerShell помогает своим пользователям, а также некоторые интересные вещи, которые вы можете сделать с его помощью.
Что такое Windows PowerShell?
Прежде чем мы углубимся в PowerShell, давайте сначала ответим на еще один вопрос: «Что такое оболочка?»
Оболочка — это компьютерная программа, которая принимает команды с клавиатуры, интерпретирует их и передает операционной системе для выполнения. По сути, он действует как интерфейс между вами и операционной системой. Он может быть основан на графическом пользовательском интерфейсе или может быть построен поверх CLI (интерфейса командной строки).
Хотя оболочка существует с момента запуска операционной системы Multics в 1969 Windows представила свою версию Shell в ноябре 1985 года. Это была базовая оболочка, которая была полезна для управления файлами и называлась MS-DOS Executive. Затем последовали разработки этой базовой оболочки, но всегда была потребность в чем-то более мощном.
Ранее в истории Windows пользователи прибегали к использованию различных инструментов для системного администрирования и автоматизации. В 2006 году в качестве решения было представлено серьезное улучшение концепции оболочки: Windows PowerShell.
Windows PowerShell позволяет выполнять различные операции, от автоматизации повторяющихся задач, сетевого администрирования и т. д. до задач, требующих большего внимания и творческого подхода (таких как публикация содержимого веб-сайта, проектирование и т. д.).
Это не только экономит ваше время, но и дает вам больший контроль над операционной системой и ее процессами.
Связано: Как разметить и отформатировать диск с помощью PowerShell
Что такое командлет PowerShell?
Теперь, когда вы знакомы с PowerShell, давайте рассмотрим один из наиболее важных аспектов PowerShell: командлет .
Командлеты (произносится как command-let) — это простые и эффективные команды Windows PowerShell. Они существуют как строительные блоки, которые можно использовать для выполнения определенных действий, таких как копирование и перемещение файлов, или как часть более крупного и сложного сценария PowerShell.
Командлет Get-Help , например, является наиболее полезным командлетом, поскольку он позволяет увидеть, что делает конкретный командлет, просмотреть его параметры и показать различные способы использования командлета.
Подобно Get-Help , Get-Command — это еще один командлет, который можно использовать для устранения различных проблем из оболочки. В частности, он показывает все команды, установленные в вашей системе. Отображаемые команды включают командлеты, функции, псевдонимы, фильтры, сценарии и приложения. При использовании с параметрами он покажет вам все конкретные команды, связанные с этим параметром.
Например, следующая команда захватывает команды всех типов, доступных на вашем локальном компьютере, и отображает их:
Get-Command *
Get-Command с параметром команды из текущих сеансов.
Get-Command -ListImported
Как запустить Windows PowerShell
Чтобы запустить Windows PowerShell, откройте строку поиска меню «Пуск», введите windows powershell, и запустите выберите Запустите от имени администратора .
Это запустит программу PowerShell на вашем компьютере. Кроме того, вы можете запустить его через диалоговое окно «Выполнить». Нажмите клавишу Windows + R на клавиатуре, введите powershell, и нажмите . Введите , чтобы запустить PowerShell.
Как использовать Windows PowerShell
Как объяснялось выше, PowerShell — это приложение, которое помогает автоматизировать повторяющиеся задачи и управлять простыми задачами администрирования Windows и, следовательно, помогает сэкономить время. Ниже мы определяем некоторые из наиболее полезных способов использования PowerShell в своих интересах.
1. Создание скриптов с помощью Windows PowerShell
Скрипт – это набор инструкций, своего рода короткая программа, которая выполняется во время выполнения более крупной программы.
С помощью PowerShell вы можете легко создать сценарий и снова использовать его в будущем, если возникнет такая необходимость. Существует множество способов создать сценарий, но сейчас мы сосредоточимся на самом простом способе: создании сценария PowerShell с помощью Блокнота.
Чтобы создать сценарий PowerShell, выполните следующие действия:
- Введите notepad в строке поиска меню «Пуск» и выберите «Наилучшее совпадение».
- В Блокноте напишите или вставьте сценарий, который хотите использовать. Например:
Write-Host «Я делаю мемы, поэтому я существую».
Теперь нажмите на опцию Файл и выберите Сохранить как. Введите соответствующее имя и нажмите Сохранить .
Чтобы запустить сценарий, запустите PowerShell от имени администратора. Затем введите команду снизу и нажмите Введите .
Set-ExecutionPolicy RemoteSigned
Это изменит политику выполнения на вашем компьютере и позволит запускать сценарии в PowerShell. Обратите внимание, , что это постоянное изменение и что ограничение политики выполнения является функцией безопасности, которая может помешать вам запускать вредоносные сценарии. Если вы копируете и вставляете сценарии PowerShell из Интернета, не полностью понимая, что делает сценарий, это полезная функция.
Наконец, введите A и нажмите Enter, и введите эту команду, чтобы запустить скрипт, заменив mshaa на ваше имя пользователя.
& "C:\Users\mshaa\Desktop\script.txt"
Если вы следовали командам по порядку, ваш скрипт PowerShell будет работать без сбоев.
Помните, что вы должны запускать PowerShell от имени администратора. В противном случае вы не сможете изменить политику выполнения по умолчанию в своей системе, которая запрещает выполнение случайных скриптов в вашей системе.
Вместо этого будет вызвано исключение, которое, как и все исключения, остановит выполнение вашей программы на полпути. Ваш интерфейс будет выглядеть примерно так:
2. Удалить содержимое определенного файла
Вы когда-нибудь были в ситуации, когда вам нужно было удалить все старое содержимое из файла, но вы хотели сохранить сам файл нетронутым? ? Если это так, вы можете использовать команду clear-content из PowerShell, чтобы сделать это.
Очистить содержимое C:\Temp\TestFile.txt
Замените путь к файлу, который вы хотите очистить.
3. Выполнение команды на удаленном компьютере
Вы также можете использовать Windows PowerShell для выполнения команды на одном или нескольких удаленных компьютерах. Эта функция PowerShell известна как PowerShell Remoting. Все, что вам нужно, это один компьютер на вашем конце и надежное подключение к Интернету.
Однако перед выполнением команды необходимо установить удаленное соединение между несколькими компьютерами. Вы можете использовать команду PSSession для запуска удаленных команд.
Enter-PSSession -ComputerName RemotePCName -Credential UserID
После подключения к компьютеру вы можете выполнять команды PowerShell, как если бы вы выполняли их в локальной системе.
Если вы хотите выполнить команду на нескольких удаленных компьютерах, выполните следующую команду:
Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1
Этот фрагмент кода выполнит сценарий DiskCollect.ps1 на удаленные компьютеры, Server01 и Server02. Для подробного ознакомления с удаленными командами ознакомьтесь с официальным руководством Microsoft по удаленным командам.
4. Использование PowerShell для сканирования на наличие вредоносных программ
Вы можете запустить сканирование системы на наличие вредоносных программ прямо через Windows PowerShell. Чтобы запустить быстрое сканирование, введите следующие команды в PowerShell и нажмите Enter :
Start-MpScan -ScanType QuickScan
Но иногда быстрого сканирования недостаточно. К счастью, вы также можете выполнить полное сканирование из PowerShell.
Start-MpScan -ScanType FullScan
Обратите внимание, что полное сканирование может занять некоторое время, поэтому было бы целесообразно запустить его в фоновом режиме. Для этого используйте вместо этого эту команду:
Start-MpScan -ScanType FullScan -AsJob
Это запустит полное сканирование на наличие вредоносных программ в фоновом режиме, пока вы выполняете другие задачи. Для получения дополнительной информации ознакомьтесь с нашим полным руководством по использованию PowerShell для сканирования компьютера на наличие вредоносных программ.
5. Работа с файлами и папками
Вы даже можете управлять файлами и папками вашей системы прямо из одного места с помощью Windows PowerShell. Вы можете выполнять множество различных операций, например перемещать, открывать, переименовывать и т. д. Как и в случае с предыдущими командами, отключите mshaa для вашего имени пользователя.
Переименование файлов и папок
Файлы и папки можно легко переименовать с помощью командлета Rename-Item в PowerShell.
Rename-Item c:\Users\mshaa\Desktop\MemesAreLame.xls MemesAreCool.xls
Перемещение файлов и папок
Как и при переименовании, вы также можете использовать PowerShell для перемещения файлов и папок вашего компьютера.
Move-Item c:\Users\mshaa\Desktop\MemesAreLame.xls c:\Users\mshaa\Documents
Открытие файлов
Используйте приведенную ниже команду, чтобы открыть любой случайный файл в вашей системе:
Invoke-Item c:\MakeUseOf\HelloWorld.txt
Кроме того, вы можете открыть несколько файлов за один раз после небольшой настройки вышеуказанная команда.