PowerShell

редактировать
Кросс-платформенный интерфейс командной строки и язык сценариев для системного и сетевого администрирования
PowerShell
PowerShell Core 6.0 icon.png
Windows PowerShell 1.0 PD.png Снимок экрана сеанса Windows PowerShell
Парадигма Императивная, конвейерная, объектно-ориентированная, функциональная и отражающая
Разработана Джеффри Сновер, Брюс Пайетт, Джеймс Труэр (и др.)
Разработчик Microsoft
Впервые появился14 ноября 2006 г.; 13 лет назад (14.11.2006)
Стабильный выпуск 7.0.3 / 16 июля 2020 г.; 3 месяца назад (16.07.2020)
Предварительный выпуск v7.1.0-rc.2 / 20 октября 2020 г.; 13 дней назад (2020-10-20)
Дисциплина ввода Сильный, безопасный, неявный и динамический
Язык реализацииC#
Платформа .NET Framework, .NET Core
OS
Лицензия Лицензия MIT (но компонент Windows остается проприетарным )
Имя файла расширения
  • .ps1 (сценарий)
  • .ps1xml (документ XML)
  • .psc1 (файл консоли)
  • .psd1 (файл данных)
  • .psm1 (модуль сценария)
  • .pssc (файл конфигурации сеанса)
  • .psrc (файл возможностей ролей)
  • .cdxml (XML-документ определения командлета)
Веб-сайтmicrosoft.com / powershell
Под влиянием
Python, Ksh, Perl, C#, CL, DCL, SQL, Tcl, Tk,Chef, Puppet

PowerShell - это среда автоматизации задач и управления конфигурацией от Microsoft, состоящая из командной строки оболочка и связанный с ней язык сценариев. Первоначально только компонент Windows, известный как Windows PowerShell, он был сделан с открытым исходным кодом и кроссплатформенным 18 августа 2016 года с введением PowerShell Core . Первый построен на .NET Framework, второй - на .NET Core.

. В PowerShell административные задачи обычно выполняются командлетами (произносится как command-let), которые являются специализированными.NET. классы, реализующие конкретную операцию. Они работают путем доступа к данным в разных хранилищах данных, таких как файловая система или реестр, которые предоставляются PowerShell через поставщиков. Сторонние разработчики могут добавлять командлеты и поставщиков в PowerShell. Командлеты могут использоваться скриптами, а скрипты могут быть упакованы в модули.

PowerShell обеспечивает полный доступ к COM и WMI, позволяя администраторам выполнять административные задачи как в локальных, так и в удаленных системах Windows, а также в WS-Management и CIM, позволяющие управлять удаленными системами Linux и сетевыми устройствами. PowerShell также предоставляет хостинг API, с помощью которого среда выполнения PowerShell может быть встроена в другие приложения. Эти приложения могут затем использовать функциональные возможности PowerShell для реализации определенных операций, в том числе операций, предоставляемых через графический интерфейс . Эта возможность использовалась Microsoft Exchange Server 2007 для предоставления своих функций управления в виде командлетов и поставщиков PowerShell и реализации графических инструментов управления в качестве хостов PowerShell, которые вызывают необходимые командлеты. Другие приложения Microsoft, включая Microsoft SQL Server 2008, также предоставляют свой интерфейс управления с помощью командлетов PowerShell.

PowerShell включает собственную обширную консольную справку (аналогично справочным страницам в оболочках Unix ), доступном через командлет Get-Help. Обновленное содержимое локальной справки можно получить из Интернета с помощью командлета Update-Help. Кроме того, помощь из Интернета может быть получена в каждом конкретном случае с помощью переключателя -onlineна Get-Help.

Содержание

  • 1 Предпосылки
  • 2 Дизайн
    • 2.1 Командлеты
    • 2.2 Конвейер
    • 2.3 Сценарии
    • 2.4 Хостинг
  • 3 Конфигурация желаемого состояния
  • 4 версии
    • 4.1 Windows PowerShell 1.0
    • 4.2 Windows PowerShell 2.0
    • 4.3 Windows PowerShell 3.0
    • 4.4 Windows PowerShell 4.0
    • 4.5 Windows PowerShell 5.0
    • 4.6 Windows PowerShell 5.1
    • 4.7 PowerShell Core 6
    • 4.8 PowerShell 7
  • 5 Сравнение командлетов с аналогичными командами
  • 6 Расширения имен файлов
  • 7 Поддержка приложений
  • 8 Альтернативная реализация
  • 9 См. Также
  • 10 Ссылки
  • 11 Дополнительная литература
  • 12 Внешние ссылки

Предпосылки

Каждая версия Microsoft Windows для персональных компьютеров содержит интерпретатор командной строки (CLI) для управления операционной системой. Его предшественник, MS-DOS, полагался исключительно на интерфейс командной строки. Это COMMAND.COM в MS-DOS и Windows 9x и cmd.exe в семействе операционных систем Windows NT. Оба поддерживают несколько основных внутренних команд. Для других целей необходимо написать отдельное консольное приложение . Они также включают базовый язык сценариев (командные файлы ), который можно использовать для автоматизации различных задач. Однако их нельзя использовать для автоматизации всех аспектов функциональности графического пользовательского интерфейса (GUI), отчасти потому, что эквиваленты операций в командной строке ограничены, а язык сценариев является элементарным. В Windows Server 2003 ситуация улучшилась, но поддержка сценариев по-прежнему была неудовлетворительной.

Microsoft попыталась устранить некоторые из этих недостатков, представив Windows Script Host в 1998 с Windows 98 и его хостом на основе командной строки: cscript.exe. Он интегрируется с движком Active Script и позволяет писать сценарии на совместимых языках, таких как JScript и VBScript, используя API предоставляется приложениями через компонентную объектную модель (COM ). Однако у него есть свои недостатки: его документация не очень доступна, и он быстро приобрел репутацию системы вектор уязвимостей после того, как несколько громких компьютерных вирусов использовали слабые места в его безопасности. положения. Различные версии Windows предоставляли различные интерпретаторы командной строки специального назначения (такие как netsh и WMIC ) со своими собственными наборами команд, но они не были совместимы.

В интервью, опубликованном 13 сентября 2017 года, Джеффри Сновер объяснил мотивацию проекта:

Я продвигал кучу управленческих изменений, а затем изначально взял UNIX и сделали их доступными в Windows, а потом они просто не работали. Правильно? Потому что существует основная архитектурная разница между Windows и Linux. В Linux все представляет собой текстовый файл ASCII , так что все, чем можно манипулировать, является инструментом управления. AWK, grep, sed ? Счастливых дней!

Я принес эти инструменты, доступные в Windows, но они не помогли в управлении Windows, потому что в Windows все представляет собой API, который возвращает структурированные данные. Так что это не помогло. [...] Мне пришла в голову идея PowerShell, и я сказал: «Эй, мы можем сделать это лучше».

К 2002 году Microsoft начала разрабатывать новый подход к управлению командной строкой, включая интерфейс командной строки. называется Monad (также известный как Microsoft Shell или MSH). Идеи, лежащие в основе этого, были опубликованы в августе 2002 года в белой книге под названием «Манифест монады». Monad должен был стать новым расширяемым интерфейсом командной строки со свежим дизайном, который был бы способен автоматизировать весь спектр основных административных задач. Microsoft впервые продемонстрировала Monad на конференции профессионального развития в Лос-Анджелесе в октябре 2003 года. Через несколько месяцев началась частная бета-программа, которая в конечном итоге привела к публичной бета-программе.

Microsoft опубликовала первую общедоступную бета-версию Monad 17 июня 2005 г., Beta 2 - 11 сентября 2005 г. и Beta 3 - 10 января 2006 г. Не намного позже, 25 апреля., 2006 Microsoft официально объявила, что Monad была переименована в Windows PowerShell, позиционируя ее как важную часть своих предложений по технологиям управления. Релиз-кандидат 1 PowerShell был выпущен в то же время. Важным аспектом как изменения названия, так и RC было то, что теперь он был компонентом Windows, а не дополнительным продуктом.

Релиз-кандидат 2 версии PowerShell 1 был выпущен 26 сентября 2006 г., а окончательный релиз в Интернете (RTW) состоялся 14 ноября 2006 г. и объявлен на TechEd Barcelona. PowerShell для более ранних версий Windows был выпущен 30 января 2007 года.

Разработка PowerShell v2.0 началась до поставки PowerShell v1.0. Во время разработки Microsoft выпустила три предварительных версии технологии сообщества (CTP). Microsoft сделала эти выпуски общедоступными. Последний выпуск CTP Windows PowerShell v2.0 был выпущен в декабре 2008 года.

PowerShell для Linux 6.0 Alpha 9 на Ubuntu 14.04 x64

PowerShell v2.0 был завершен и выпущен в производство в Август 2009 г., как составная часть Windows 7 и Windows Server 2008 R2. Версии PowerShell для Windows XP, Windows Server 2003, Windows Vista и Windows Server 2008 были выпущены в октябре 2009 г. и доступны для загрузки как для 32-разрядных, так и для 64-разрядных платформ.

Windows 10 поставлялась с платформой тестирования. для PowerShell.

18 августа 2016 года Microsoft объявила, что они сделали PowerShell с открытым исходным кодом и кроссплатформенным с поддержкой Windows, macOS, CentOS и Ubuntu. Исходный код был опубликован на GitHub. Переход на открытый исходный код создал второе воплощение PowerShell под названием «PowerShell Core», работающее на .NET Core. Он отличается от «Windows PowerShell», которая работает на полной .NET Framework. Начиная с версии 5.1, PowerShell Core поставляется вместе с Windows Server 2016 Nano Server.

Design

Разработчики PowerShell основывают базовую грамматику инструмента на грамматике POSIX 1003.2 KornShell.

Windows PowerShell может выполнять четыре типа именованных команд:

  • командлеты (.NET Framework программы, предназначенные для взаимодействия с PowerShell)
  • сценарии PowerShell (файлы с суффиксом .ps1)
  • Функции PowerShell
  • автономный исполняемый программы

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

Система расширенных типов PowerShell ( ETS) основан на системе типов.NET, но с расширенной семантикой (например, propertySets и сторонняя расширяемость). Например, он позволяет создавать различные представления объектов, отображая только подмножество полей данных, свойств и методов, а также задавая настраиваемое поведение форматирования и сортировки. Эти представления отображаются на исходный объект с помощью файлов конфигурации на основе XML.

Командлеты

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

Командлеты - это специализированные.NET классы, экземпляры которых создает среда выполнения PowerShell. и вызывает во время выполнения. Командлеты являются производными от Cmdletили от PSCmdlet, последний используется, когда командлету необходимо взаимодействовать со средой выполнения PowerShell. Эти базовые классы определяют определенные методы - BeginProcessing (), ProcessRecord ()и EndProcessing ()- которые реализация командлета переопределяет для обеспечения функциональности. При каждом запуске командлета PowerShell последовательно вызывает эти методы, причем ProcessRecord ()вызывается, если он получает входные данные конвейера. Если коллекция объектов передается по конвейеру, метод вызывается для каждого объекта в коллекции. Класс, реализующий командлет, должен иметь один атрибут.NET - CmdletAttribute, который указывает глагол и существительное, составляющие имя командлета. Общие команды представлены в виде перечисления.

. Если командлет получает ввод конвейера или ввод параметра командной строки, в классе должно быть соответствующее свойство с мутатором реализация. PowerShell вызывает мутатор со значением параметра или вводом конвейера, который сохраняется реализацией мутатора в переменных класса. Затем к этим значениям обращаются методы, реализующие эту функциональность. Свойства, которые сопоставляются с параметрами командной строки, помечены ParameterAttributeи устанавливаются перед вызовом BeginProcessing (). Те, которые сопоставляются с вводом конвейера, также окружены атрибутом ParameterAttribute, но с набором параметров атрибута ValueFromPipeline.

Реализация этих классов командлетов может относиться к любому .NET API и может быть на любом языке.NET. Кроме того, PowerShell делает доступными определенные API-интерфейсы, такие как WriteObject (), который используется для доступа к функциям, специфичным для PowerShell, например записи результирующих объектов в конвейер. Командлеты могут напрямую использовать доступ к данным.NET API или использовать инфраструктуру PowerShell поставщиков PowerShell, которые делают хранилища данных адресуемыми с использованием уникальных путей . Хранилища данных представлены с помощью букв дисков и иерархий внутри них, адресованных как каталоги. Windows PowerShell поставляется с поставщиками для файловой системы, реестра, хранилища сертификатов, а также пространств имен для псевдонимов команд, переменных и функций. Windows PowerShell также включает в себя различные командлеты для управления различными системами Windows, включая файловую систему, или использования инструментария управления Windows для управления компонентами Windows. Другие приложения могут регистрировать командлеты в PowerShell, что позволяет ему управлять ими, и, если они включают какое-либо хранилище данных (например, базы данных), они также могут добавлять конкретных поставщиков.

PowerShell V2 добавил более переносимую версию командлеты, называемые модулями. В примечаниях к выпуску PowerShell V2 говорится:

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

Количество командлетов обычно увеличивается с каждой версией:

ВерсияКомандлеты
Windows PowerShell 1.0129
Windows PowerShell 2.0632
Windows PowerShell 3.0около 1000
Windows PowerShell 4.0?
Windows PowerShell 5.0около 1300
Windows PowerShell 5.11586
PowerShell Core 6.0?
PowerShell Core 6.1?
PowerShell Core 6.2?
PowerShell 7.01507

конвейер

PowerShell реализует концепцию конвейера, который позволяет передавать выходные данные одного командлета другому командлету в качестве входных данных. Например, выходные данные командлета Get-Processмогут быть переданы по конвейеру в Where-Objectдля фильтрации любого процесса, имеющего менее 1 МБ выгружаемой памяти, а затем в Sort-Object(например, для сортировки объектов по количеству дескрипторов), а затем, наконец, к командлету Select-Object, чтобы выбрать только первые 10 (т. Е. 10 процессов на основе счетчик дескрипторов).

Как и в случае с конвейерами Unix, конвейеры PowerShell могут создавать сложные команды, используя оператор |для соединения этапов. Однако конвейер PowerShell отличается от конвейеров Unix тем, что этапы выполняются в среде выполнения PowerShell, а не как набор процессов, координируемых операционной системой, и структурированные объекты.NET, а не потоки байтов, передаются из от одного этапа к другому. Использование объектов и выполнение этапов в среде выполнения PowerShell устраняет необходимость сериализации структур данных или их извлечения путем явного синтаксического анализа текстового вывода. Объект также может инкапсулировать определенные функции, которые работают с содержащимися данными, которые становятся доступными команде получателя для использования. Для последнего командлета в конвейере PowerShell автоматически передает свой выходной объект командлету Out-Default, который преобразует объекты в поток объектов форматирования и затем отображает их на экране.

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

Скрипты

Windows PowerShell включает динамически типизированный язык сценариев, который может выполнять сложные операции с помощью командлетов императивно. Язык сценариев поддерживает переменные, функции, ветвление (if-then-else ), циклы (while , do , для и foreach ), структурированная обработка ошибок / исключений и замыкания / лямбда-выражений, а также интеграция с.NET. Переменные в сценариях PowerShell имеют префикс $. Переменным можно присвоить любое значение, включая вывод командлетов. Строки могут быть заключены в одинарные или двойные кавычки: при использовании двойных кавычек переменные будут раскрыты, даже если они находятся внутри кавычек. Заключение пути к файлу в фигурные скобки, перед которым стоит знак доллара (как в $ {C: \ foo.txt}), создает ссылку на содержимое файла. Если он используется как L-значение, все, что ему присвоено, будет записано в файл. При использовании в качестве R-значения будет прочитано содержимое файла. Если объект назначен, он сериализуется перед сохранением.

К членам объекта можно получить доступ, используя нотацию ., как в синтаксисе C #. PowerShell предоставляет специальные переменные, такие как $ args, который представляет собой массив всех аргументов командной строки, переданных функции из командной строки, и $ _, который относится к текущему объект в конвейере. PowerShell также предоставляет массивы и ассоциативные массивы. Язык сценариев PowerShell также немедленно оценивает арифметические выражения, введенные в командную строку, и анализирует общие сокращения, такие как ГБ, МБ и КБ.

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

имя функции ($ Param1, $ Param2) {инструкции}

Определенная функция вызывается в любой из следующих форм:

имя значение1 значение2 имя -Param1 значение1 -Param2 value2

PowerShell поддерживает именованные параметры, позиционные параметры, параметры переключения и динамические параметры.

PowerShell позволяет вызывать любые методы.NET, предоставляя их пространства имен, заключенные в скобки (), а затем использование пары двоеточий (::) для обозначения статического метода. Например, [System.Console] :: WriteLine ("PowerShell"). Объекты создаются с помощью командлета New-Object. Вызов методов объектов.NET осуществляется с помощью обычной записи ..

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

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

Специальные символы PowerShell
СимволОписание
`0Null
ʻaAlert
`bBackspace
ʻeEscape
` fForm Feed
`nNewline
`rВозврат каретки
` tГоризонтальная табуляция
ʻu {x}Unicode escape-последовательность
`vВертикальная табуляция
- %Прекратить синтаксический анализ

Для обработки ошибок PowerShell предоставляет основанный на.NET механизм обработки исключений. В случае ошибок генерируются объекты, содержащие информацию об ошибке (объект Exception), которые перехватываются с помощью конструкции try... catch(хотя trapтакже поддерживается конструкция). PowerShell можно настроить на возобновление выполнения в автоматическом режиме, не создавая исключения; это можно сделать одной командой, одним сеансом или постоянно.

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

. Язык сценариев PowerShell поддерживает двоичный префикс, аналогичный научному нотация, поддерживаемая многими языками программирования в семействе C.

Хостинг

Также можно использовать PowerShell, встроенный в приложение управления, которое использует среду выполнения PowerShell для реализации функций управления. Для этого PowerShell предоставляет управляемый хостинг API. Через API-интерфейсы приложение может создать экземпляр пространства выполнения (один экземпляр среды выполнения PowerShell), который выполняется в процессе приложения и отображается как объект Runspace. Состояние области выполнения заключено в объект SessionState. При создании пространства выполнения среда выполнения Windows PowerShell инициализирует создание экземпляра, включая инициализацию поставщиков и перечисление командлетов, и соответствующим образом обновляет объект SessionState. После этого область выполнения должна быть открыта либо для синхронной обработки, либо для асинхронной обработки. После этого его можно использовать для выполнения команд.

Для выполнения команды необходимо создать конвейер (представленный объектом Pipeline) и связать его с пространством выполнения. Затем объект конвейера заполняется командлетами, составляющими конвейер. Для последовательных операций (как в сценарии PowerShell) объект конвейера создается для каждого оператора и вкладывается в другой объект конвейера. При создании конвейера Windows PowerShell вызывает процессор конвейера, который преобразует командлеты в соответствующие сборки (командный процессор), добавляет ссылку на них в конвейер и связывает их с InputPipe., OutputPipeи ErrorOutputPipe, чтобы представить соединение с конвейером. Типы проверяются, а параметры связываются с помощью Reflection. После настройки конвейера хост вызывает метод Invoke ()для выполнения команд или его асинхронный эквивалент - InvokeAsync (). Если конвейер имеет командлет Write-Hostв конце конвейера, он записывает результат на экран консоли. В противном случае результаты передаются на хост, который может либо применить дальнейшую обработку, либо отобразить сам вывод.

Microsoft Exchange Server 2007 использует API-интерфейсы хостинга для предоставления своего графического интерфейса управления. Каждая операция, представленная в графическом интерфейсе пользователя, сопоставляется с последовательностью команд PowerShell (или конвейеров). Хост создает конвейер и выполняет их. Фактически, интерактивная консоль PowerShell сама по себе является хостом PowerShell, который интерпретирует сценарии, введенные в командной строке, и создает необходимые объекты Pipelineи вызывает их.

Желательно. Конфигурация состояния

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

После запуска конфигурации DSC гарантирует, что система получит состояние, описанное в конфигурации. Конфигурации DSC идемпотентны. Local Configuration Manager (LCM) периодически опрашивает систему, используя поток управления, описываемый ресурсами (обязательные части DSC), чтобы убедиться, что состояние конфигурации сохраняется.

Версии

Изначально использовавшая кодовое имя «Монада», PowerShell была впервые публично показана на конференции профессиональных разработчиков в октябре 2003 года в Лос-Анджелесе. Все основные выпуски по-прежнему поддерживаются, и каждый основной выпуск имеет обратную совместимость с предыдущими версиями.

Windows PowerShell 1.0

PowerShell 1.0 был выпущен в ноябре 2006 г. для Windows XP SP2, Windows Server 2003 SP1 и Windows Vista. Это дополнительный компонент Windows Server 2008.

Windows PowerShell 2.0

Windows PowerShell ISE v2.0 в Windows 7, интегрированной среды разработки для сценариев PowerShell..

PowerShell 2.0 интегрирован с Windows 7 и Windows Server 2008 R2 и выпущен для Windows XP с пакетом обновления 3, Windows Server. 2003 с пакетом обновления 2 и Windows Vista с пакетом обновления 1.

PowerShell v2 включает изменения языка сценариев и API размещения, а также более 240 новых командлетов.

Новые функции PowerShell 2.0 включают:

  • Удаленное взаимодействие PowerShell : с помощью WS-Management PowerShell 2.0 позволяет запускать сценарии и командлеты на удаленном компьютере или большом компьютере. набор удаленных машин.
  • Фоновые задания : также называемые PSJob, они позволяют асинхронно вызывать последовательность команд (сценарий) или конвейер. Задания можно запускать на локальном компьютере или на нескольких удаленных машинах. Интерактивный командлет в PSJob блокирует выполнение задания до тех пор, пока не будет предоставлен ввод пользователя.
  • Транзакции : включите командлет, и разработчики могут выполнять транзакционные операции. PowerShell 2.0 включает командлеты транзакций для запуска, фиксации и отката PSTransaction, а также функции для управления и направления транзакции в участвующие командлеты и операции поставщика. Поставщик реестра PowerShell поддерживает транзакции.
  • Расширенные функции : это командлеты, написанные с использованием языка сценариев PowerShell. Первоначально называемая «командлетами сценария», эта функция была позже переименована в «расширенные функции».
  • SteppablePipelines : это позволяет пользователю контролировать, когда BeginProcessing (), ProcessRecord ()и EndProcessing ()вызываются функции командлета.
  • Модули : это позволяет разработчикам и администраторам сценариев организовывать и разбивать сценарии PowerShell в автономные многоразовые блоки. Код из модуля выполняется в собственном автономном контексте и не влияет на состояние вне модуля. Модули могут определять среду с ограниченным пространством выполнения с помощью сценария. У них есть постоянное состояние, а также открытые и частные члены.
  • Язык данных : зависящее от домена подмножество языка сценариев PowerShell, которое позволяет отделить определения данных от сценариев и позволяет локализовать строковые ресурсы, импортируемые в сценарий во время выполнения (интернационализация сценария).
  • Отладка сценария : позволяет устанавливать точки останова в сценарии или функции PowerShell. Точки останова могут быть установлены на строках, строках и столбцах, командах и доступе для чтения или записи переменных. Он включает набор командлетов для управления точками останова с помощью сценария.
  • Eventing : эта функция позволяет прослушивать, пересылать и действовать в отношении событий управления и системы. Событие позволяет узлам PowerShell получать уведомления об изменениях состояния их управляемых сущностей. Он также позволяет сценариям PowerShell подписываться на ObjectEvents, PSEvents и WmiEvents и обрабатывать их синхронно и асинхронно.
  • Интегрированная среда сценариев Windows PowerShell (ISE) : PowerShell 2.0 включает хост PowerShell на основе графического интерфейса, который предоставляет интегрированный отладчик, подсветка синтаксиса, завершение табуляции и до 8 консолей PowerShell с поддержкой Unicode (пространства выполнения) в пользовательском интерфейсе с вкладками, а также возможность запускать только выбранные части в сценарии.
  • Передача файлов по сети : встроенная поддержка приоритетной, регулируемой и асинхронной передачи файлов между машинами с использованием фоновой интеллектуальной службы передачи (BITS).
  • Новые командлеты : включая Out-GridView, который отображает табличные данные в объекте WPF GridView в системах, которые это позволяют, и если ISE установлен и включен.
  • Новые операторы : -Split, -Joinи Splatting (@) операторы.
  • Обработка исключений с помощью Try-Catc h-finally : в отличие от других языков.NET, это позволяет использовать несколько типов исключений для одного блока catch.
  • Вложенные строки Here-Strings : PowerShell Here-Strings были улучшены и могут теперь гнездо.
  • Блокировать комментарии : PowerShell 2.0 поддерживает блочные комментарии с использованием <#и #>в качестве разделителей.
  • Новые API : Новые API расширяют возможности управления через синтаксический анализатор PowerShell и среду выполнения на хост, для создания и управления коллекцией пространств выполнения (RunspacePools), а также возможность создавать ограниченные пространства выполнения, которые позволяют вызывать только настроенное подмножество PowerShell. Новые API также поддерживают участие в управляемой транзакции Windows PowerShell.

Windows PowerShell 3.0

PowerShell 3.0 интегрирован с Windows 8 и с Windows Server 2012. Microsoft также сделала PowerShell 3.0 доступным для Windows 7 с пакетом обновления 1, для Windows Server 2008 с пакетом обновления 1 и для Windows Server 2008 R2 с пакетом обновления. Пакет 1.

PowerShell 3.0 является частью более крупного пакета Windows Management Framework 3.0 (WMF3), который также содержит службу WinRM для поддержки удаленного взаимодействия. Microsoft выпустила несколько выпусков Community Technology Preview WMF3. Предварительная версия 2 (CTP 2) Windows Management Framework 3.0 была выпущена 2 декабря 2011 года. Windows Management Framework 3.0 была выпущена для общедоступной версии в декабре 2012 года и по умолчанию включена в Windows 8 и Windows Server 2012.

Новые функции в PowerShell 3.0 включают:

  • Запланированные задания : можно запланировать выполнение заданий в заранее установленное время и дату.
  • Возможность подключения сеанса : сеансы можно отключать и повторно подключать. Удаленные сеансы стали более терпимыми к временным сбоям сети.
  • Улучшено написание кода : добавлены Автозавершение кода (IntelliSense) и фрагменты. PowerShell ISE позволяет пользователям использовать диалоговые окна для ввода параметров для командлетов PowerShell.
  • Поддержка делегирования : административные задачи можно делегировать пользователям, у которых нет разрешений для этого типа задач, без предоставления им постоянных дополнительных разрешений.
  • Обновление справки : справочную документацию можно обновить с помощью команды Update-Help.
  • Автоматическое определение модуля : модули загружаются неявно всякий раз, когда вызывается команда из этого модуля. Автозавершение кода работает и для выгруженных модулей.
  • Новые команды : были добавлены десятки новых модулей, включая функции для управления дисками get-WmiObject win32_logicaldisk, томами, межсетевыми экранами, сетевыми соединениями и управлением принтерами, ранее выполнялось через WMI.

Windows PowerShell 4.0

PowerShell 4.0 интегрирован с Windows 8.1 и с Windows Server 2012 R2. Microsoft также сделала PowerShell 4.0 доступным для Windows 7 SP1, Windows Server 2008 R2 SP1 и Windows Server 2012.

Новые функции в PowerShell 4.0 включают:

  • Желательно Конфигурация состояния : декларативные языковые расширения и инструменты, которые позволяют развертывать и управлять данными конфигурации для систем, использующих стандарты управления DMTF и протокол WS-Management
  • Новое исполнение по умолчанию policy : на серверах Windows по умолчанию используется политика выполнения RemoteSigned.
  • Save-Help : теперь можно сохранять справку для модулей, установленных на удаленных компьютерах.
  • Расширенная отладка : Отладчик теперь поддерживает рабочие процессы отладки, удаленное выполнение сценариев и сохранение сеансов отладки при повторных подключениях сеансов PowerShell.
  • -PipelineVariable switch : новый повсеместный параметр, позволяющий отображать текущий объект конвейера как переменную для целей программирования
  • Диагностика сети для управления физическим и Hyper-V vir Настроенные сетевые переключатели
  • Синтаксис методов Where и ForEach предоставляет альтернативный метод фильтрации и итерации объектов.

Windows PowerShell 5.0

значок PowerShell 5.0

Windows Management Framework (WMF) 5.0 RTM, включающая PowerShell 5.0, была повторно выпущена для Интернета 24 февраля 2016 г. после первоначального выпуска с серьезной ошибкой.

Ключевые особенности включают:

  • новое ключевое слово class, которое создает классы для объектно-ориентированного программирования
  • Новое ключевое слово enum, которое создает перечисления
  • OneGetкомандлеты для поддержки Chocolatey диспетчер пакетов
  • Расширение поддержки управления коммутатором до уровня 2 сетевых коммутаторов.
  • Отладка для фоновых заданий PowerShell и экземпляров PowerShell, размещенных в других процессах (каждый из которых называется «пространством выполнения»)
  • Конфигурация желаемого состояния (DSC) Local Configuration Manager (LCM) версии 2.0
  • Частичные конфигурации DSC
  • DSC Local Configuration Manager meta- конфигураций
  • Создание ресурсов DSC с использованием классов PowerShell

Windows PowerShell 5.1

Он был выпущен вместе с юбилейным обновлением Windows 10 2 августа 2016 г. и в Windows Server 2016. PackageManagement теперь поддерживает прокси, PSReadLine теперь поддерживает ViMode, и были добавлены два новых командлета: Get-TimeZone и Set-TimeZone. Модуль LocalAccounts позволяет добавлять / удалять локальные учетные записи пользователей. Предварительная версия PowerShell 5.1 была выпущена для Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 и Windows Server 2012 R2 16 июля 2016 г. и выпущена 19 января 2017 г.

PowerShell 5.1 - это первая версия, состоящая из двух редакций: Desktop и Core. Версия «Desktop» является продолжением традиционной оболочки Windows PowerShell, работающей на полном стеке.NET Framework. Версия «Core» работает на.NET Core и поставляется в комплекте с Windows Server 2016 Nano Server. В обмен на меньшую занимаемую площадь в последнем отсутствуют некоторые функции, такие как командлеты для управления буфером обмена или присоединения компьютера к домену, командлеты WMI версии 1, командлеты и профили журнала событий. Это была последняя версия PowerShell, созданная исключительно для Windows.

PowerShell Core 6

PowerShell Core 6.0 был впервые анонсирован 18 августа 2016 года, когда Microsoft представила PowerShell Core и свое решение сделать продукт кроссплатформенным, независимо от Windows, бесплатная и с открытым исходным кодом. Он стал общедоступным 10 января 2018 года для Windows, macOS и Linux. Он имеет собственный жизненный цикл поддержки и соответствует политике жизненного цикла Microsoft, представленной в Windows 10: поддерживается только последняя версия PowerShell Core. Microsoft планирует выпускать одну минорную версию PowerShell Core 6.0 каждые шесть месяцев.

Наиболее значительным изменением в этой версии PowerShell является расширение для других платформ. Для администраторов Windows эта версия PowerShell не включала никаких важных новых функций. В интервью сообществу 11 января 2018 г. команду PowerShell попросили перечислить 10 самых интересных вещей, которые могут произойти для ИТ-специалиста по Windows, который перейдет с Windows PowerShell 5.1 на PowerShell Core 6.0; в ответ Ангел Кальво из Microsoft смог назвать только два: кроссплатформенный и открытый.

Согласно Microsoft, одной из новых функций PowerShell 6.1 является «Совместимость с более чем 1900 существующими командлетами в Windows 10 и Windows Server 2019. " Тем не менее, в полной версии журнала изменений подробностей об этих командлетах найти нельзя. Позже Microsoft заявляет, что этого числа было недостаточно. поскольку PowerShell Core не смог заменить Windows PowerShell 5.1 и получить признание в Windows. Однако он был популярен в Linux.

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

PowerShell 7

PowerShell 7 является продуктом, заменяющим продукты PowerShell Core 6.x, а также Windows PowerShell 5.1, которая является последней поддерживаемой версией Windows PowerShell. При разработке основное внимание уделялось тому, чтобы сделать PowerShell 7 жизнеспособной заменой Windows PowerShell 5.1, то есть иметь почти равный с Windows PowerShell с точки зрения совместимости с модулями, поставляемыми с Windows.

Новые функции PowerShell 7 включают:

  • Переключатель -Parallelдля командлета ForEach-Object, помогающий обрабатывать параллельную обработку
  • Почти паритет с Windows PowerShell с точки зрения совместимости со встроенными модулями Windows
  • Новое представление ошибок
  • Командлет Get-Error
  • Операторы цепочки конвейера (и ||), которые позволяют условное выполнение следующего командлета в конвейере
  • Оператор ?: для тернарной операции
  • ?? =оператор, который присваивает значение переменной только тогда, когда существующее значение переменной null
  • Оператор ??для объединения с нулевым значением
  • Межплатформенный Invoke-DscResource(experimental)
  • Возврат Out-GridViewc mdlet
  • Возвращение переключателя -ShowWindowдля Get-Help

Сравнение командлетов с аналогичными командами

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

Сравнение командлетов PowerShell с внутренними и внешними командами других интерпретаторов командной строки
PowerShell (командлет)PowerShell (псевдоним)Командная строка Windows оболочка Unix Описание
Get-ChildItemgci, dir, lsdir ls Список всех файлов и папок в текущей или заданной папке
Test-Connectionping ping ping Отправляет эхо-запросы ICMP на указанный компьютер с текущего компьютера или инструктирует другой компьютер сделать это
Get-Contentgc, type, cattype cat Получает содержимое файла
Get-Commandgcmtype, который,Списки доступных commands
Get-Helphelp, manapropos, man Распечатывает документацию по команде на консоли
Clear-Hostcls, clearcls clear Очищает экран
Copy-Itemcpi, copy, cpcopy, xcopy, robocopy cp Копирует файлы и fo lders в другое место
Move-Itemmi, move, mvmove mv Перемещает файлы и папки в новое место
Remove-Itemri, del, erase, rmdir, rd, rmdel, erase, rmdir, rd rm, rmdirУдаляет файлы или папки
Rename-Itemrni, ren, mvren, rename mv Переименовывает отдельный файл, папку, жесткую ссылку или символическую ссылку
Get-Locationgl, cd, pwdcd pwd Отображает рабочий путь (текущую папку)
Pop-Locationpopdpopd popdИзменяет рабочий путь к месту, которое было помещено в стек самым последним
Push-Locationpushdpushd pushdСохраняет рабочий путь в стеке
Set-Locationsl, cd, chdircd, chdir cdИзменяет рабочий путь
Tee-ObjectteeN / Atee передает входные данные в файл или переменную, передавая входные данные по конвейеру
Write-Outputecho, writeecho echoПечатает строки или другие объекты в стандартный вывод
Get-Processgps, pstlist, tasklist ps Список всех запущенных процессов
Stop-Processspps, killkill,taskkill killОстанавливает запущенный процесс
Select-Stringslsfindstr find, grep Печатает строки, соответствующие шаблону
Set-Variablesv, setset env, export, set, setenvСоздает или изменяет содержимое переменной среды
Invoke-WebRequestiwr, curl, wgetcurl wget, curlПолучает содержимое с веб-страницы в Интернете

Примечания

Расширения имени файла

РасширениеОписание
.ps1файл сценария
.psd1файл манифеста модуля; обычно поставляется с модулем сценария или двоичным модулем
.psm1файл модуля сценария
.dllDLL -совместимый файл двоичного модуля
.ps1xmlФайл определений формата и типа
.xmlXML -совместимый файл сериализованных данных
.psc1Файл консоли
.psscФайл конфигурации сеанса
.psrcФайл возможностей ролей

Поддержка приложений

ПриложениеВерсияКомандлетыПровайдерГрафический интерфейс управления
Сервер Exchange 2007402ДаДа
Windows Server 2008 ДаДаНет
Microsoft SQL Server 2008ДаДаНет
Microsoft SharePoint 2010ДаДаНет
System Center Configuration Manager 2012 R2400+ДаНет
System Center Operations Manager 200774ДаНет
System Center Virtual Machine Manager 2007ДаДаДа
System Center Data Protection Manager 2007ДаНетНет
Windows Сервер вычислительного кластера 2007ДаДаНет
Microsoft Transporter Suite для Lotus Domino 08.02.001247НетНет
Microsoft PowerTools для Open XML 1.033НетНет
IBM WebSphere MQ 6.0.2.244НетНет
IoT Core Надстройки74НеизвестноНеизвестно
Командная консоль Quest Management Shell для Active Directory 1,795НетНет
Special Operations Software Specops Command1.0ДаНетДа
VMware vSphere PowerCLI6.5 R1500+ДаДа
Internet Information Services 7.054ДаНет
Windows 7 Центр устранения неполадок6.1ДаНетДа
Развертывание Microsoft Инструментарий 2010ДаДаДа
NetApp Набор инструментов PowerShell4.22000+ДаДа
Планировщик JAMS - Система доступа к заданию и управления5.052ДаДа
0,8432НетНет
Dell Equallogic3,555НетНет
5,8ДаДаДа
0,4.139НетНет

Альтернативная реализация

Проект с именем Pash (название - игра слов на хорошо известном "bash «оболочка Unix») была с открытым исходным кодом и кроссплатформенной повторной реализацией PowerShell через платформу Mono. Pash был создан Игорем Мучником, написан на C # и выпущен под Стандартной общественной лицензией GNU. Разработка Pash застопорилась в 2008 году, была перезапущена на GitHub в 2012 году и, наконец, прекратилась в 2016 году, когда PowerShell официально стал открытым и кроссплатформенным.

См. Также

Ссылки

Дополнительная литература

  • Oakley, Andy (2005). Монада (также известная как PowerShell). О'Рейли Медиа. ISBN 0-596-10009-4.
  • Холмс, Ли (2006). Краткий справочник по Windows PowerShell. О'Рейли Медиа. ISBN 0-596-52813-2.
  • Холмс, Ли (2007). Поваренная книга Windows PowerShell. О'Рейли Медиа. ISBN 978-0-596-52849-2.
  • Уотт, Эндрю (2007). Профессиональная оболочка Windows PowerShell. Wrox Нажмите. ISBN 978-0-471-94693-9.
  • Кумаравел, Арул; Белый, Джон; Найсин Ли, Майкл; Хаппелл, Скотт; Се, Гохуэй; Вутукури, Кришна К. (2008). Профессиональное программирование Windows PowerShell: оснастки, командлеты, хосты и поставщики. Wrox Нажмите. ISBN 978-0-470-17393-0.
  • Копчински, Тайсон; Хэндли, Пит; Шоу, Марко (2009). Windows PowerShell Unleashed (2-е изд.). Pearson Education. ISBN 978-0-672-32988-3.
  • Джонс, Дон; Хикс, Джеффри (2010). Windows PowerShell 2.0: TFM (3-е изд.). Sapien Technologies. ISBN 978-0-9821314-2-8.
  • Финке, Дуглас (2012). Windows PowerShell для разработчиков. О'Рейли Медиа. ISBN 978-1-4493-2270-0.
  • Уилсон, Эд (2013). Windows PowerShell 3.0 шаг за шагом. Microsoft Press. ISBN 978-0-7356-6339-8.
  • Уилсон, Эд (2014). Рекомендации по Windows PowerShell. Microsoft Press. ISBN 978-0-7356-6649-8.

Внешние ссылки

В Викиверситете есть обучающие ресурсы по PowerShell
Последняя правка сделана 2021-06-02 13:05:56
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте