Снимок экрана сеанса 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 остается проприетарным ) |
Имя файла расширения |
|
Веб-сайт | 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
.
Каждая версия 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 x64PowerShell 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.
Разработчики PowerShell основывают базовую грамматику инструмента на грамматике POSIX 1003.2 KornShell.
Windows PowerShell может выполнять четыре типа именованных команд:
.ps1
)Если команда является автономной исполняемой программой, 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.0 | 129 |
Windows PowerShell 2.0 | 632 |
Windows PowerShell 3.0 | около 1000 |
Windows PowerShell 4.0 | ? |
Windows PowerShell 5.0 | около 1300 |
Windows PowerShell 5.1 | 1586 |
PowerShell Core 6.0 | ? |
PowerShell Core 6.1 | ? |
PowerShell Core 6.2 | ? |
PowerShell 7.0 | 1507 |
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 поддерживает следующий список специальных символов:
Символ | Описание |
---|---|
`0 | Null |
ʻa | Alert |
`b | Backspace |
ʻe | Escape |
` f | Form Feed |
`n | Newline |
`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 года в Лос-Анджелесе. Все основные выпуски по-прежнему поддерживаются, и каждый основной выпуск имеет обратную совместимость с предыдущими версиями.
PowerShell 1.0 был выпущен в ноябре 2006 г. для Windows XP SP2, Windows Server 2003 SP1 и Windows Vista. Это дополнительный компонент Windows Server 2008.
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 включают:
BeginProcessing ()
, ProcessRecord ()
и EndProcessing ()
вызываются функции командлета.Out-GridView
, который отображает табличные данные в объекте WPF GridView в системах, которые это позволяют, и если ISE установлен и включен.-Split
, -Join
и Splatting (@
) операторы.<#
и #>
в качестве разделителей.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 включают:
get-WmiObject win32_logicaldisk
, томами, межсетевыми экранами, сетевыми соединениями и управлением принтерами, ранее выполнялось через WMI.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 включают:
Windows Management Framework (WMF) 5.0 RTM, включающая PowerShell 5.0, была повторно выпущена для Интернета 24 февраля 2016 г. после первоначального выпуска с серьезной ошибкой.
Ключевые особенности включают:
class
, которое создает классы для объектно-ориентированного программирования enum
, которое создает перечисления OneGet
командлеты для поддержки Chocolatey диспетчер пакетов Он был выпущен вместе с юбилейным обновлением 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.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 Core 6.x, а также Windows PowerShell 5.1, которая является последней поддерживаемой версией Windows PowerShell. При разработке основное внимание уделялось тому, чтобы сделать PowerShell 7 жизнеспособной заменой Windows PowerShell 5.1, то есть иметь почти равный с Windows PowerShell с точки зрения совместимости с модулями, поставляемыми с Windows.
Новые функции PowerShell 7 включают:
-Parallel
для командлета ForEach-Object
, помогающий обрабатывать параллельную обработкуGet-Error
и ||
), которые позволяют условное выполнение следующего командлета в конвейере?? =
оператор, который присваивает значение переменной только тогда, когда существующее значение переменной null ??
для объединения с нулевым значением Invoke-DscResource
(experimental)Out-GridView
c mdlet-ShowWindow
для Get-Help
В следующей таблице содержится выбор командлеты, поставляемые с PowerShell, отмечая аналогичные команды в других хорошо известных интерпретаторах командной строки. Многие из этих похожих команд входят в готовые к использованию как псевдонимы в PowerShell, что упрощает работу людей, знакомых с другими распространенными оболочками.
PowerShell (командлет) | PowerShell (псевдоним) | Командная строка Windows | оболочка Unix | Описание |
---|---|---|---|---|
Get-ChildItem | gci, dir, ls | dir | ls | Список всех файлов и папок в текущей или заданной папке |
Test-Connection | ping | ping | ping | Отправляет эхо-запросы ICMP на указанный компьютер с текущего компьютера или инструктирует другой компьютер сделать это |
Get-Content | gc, type, cat | type | cat | Получает содержимое файла |
Get-Command | gcm | type, который, | Списки доступных commands | |
Get-Help | help, man | apropos, man | Распечатывает документацию по команде на консоли | |
Clear-Host | cls, clear | cls | clear | Очищает экран |
Copy-Item | cpi, copy, cp | copy, xcopy, robocopy | cp | Копирует файлы и fo lders в другое место |
Move-Item | mi, move, mv | move | mv | Перемещает файлы и папки в новое место |
Remove-Item | ri, del, erase, rmdir, rd, rm | del, erase, rmdir, rd | rm, rmdir | Удаляет файлы или папки |
Rename-Item | rni, ren, mv | ren, rename | mv | Переименовывает отдельный файл, папку, жесткую ссылку или символическую ссылку |
Get-Location | gl, cd, pwd | cd | pwd | Отображает рабочий путь (текущую папку) |
Pop-Location | popd | popd | popd | Изменяет рабочий путь к месту, которое было помещено в стек самым последним |
Push-Location | pushd | pushd | pushd | Сохраняет рабочий путь в стеке |
Set-Location | sl, cd, chdir | cd, chdir | cd | Изменяет рабочий путь |
Tee-Object | tee | N / A | tee | передает входные данные в файл или переменную, передавая входные данные по конвейеру |
Write-Output | echo, write | echo | echo | Печатает строки или другие объекты в стандартный вывод |
Get-Process | gps, ps | tlist, tasklist | ps | Список всех запущенных процессов |
Stop-Process | spps, kill | kill,taskkill | kill | Останавливает запущенный процесс |
Select-String | sls | findstr | find, grep | Печатает строки, соответствующие шаблону |
Set-Variable | sv, set | set | env, export, set, setenv | Создает или изменяет содержимое переменной среды |
Invoke-WebRequest | iwr, | curl | wget, curl | Получает содержимое с веб-страницы в Интернете |
Примечания
Расширение | Описание |
---|---|
.ps1 | файл сценария |
.psd1 | файл манифеста модуля; обычно поставляется с модулем сценария или двоичным модулем |
.psm1 | файл модуля сценария |
.dll | DLL -совместимый файл двоичного модуля |
.ps1xml | Файл определений формата и типа |
.xml | XML -совместимый файл сериализованных данных |
.psc1 | Файл консоли |
.pssc | Файл конфигурации сеанса |
.psrc | Файл возможностей ролей |
Приложение | Версия | Командлеты | Провайдер | Графический интерфейс управления |
---|---|---|---|---|
Сервер Exchange | 2007 | 402 | Да | Да |
Windows Server | 2008 | Да | Да | Нет |
Microsoft SQL Server | 2008 | Да | Да | Нет |
Microsoft SharePoint | 2010 | Да | Да | Нет |
System Center Configuration Manager | 2012 R2 | 400+ | Да | Нет |
System Center Operations Manager | 2007 | 74 | Да | Нет |
System Center Virtual Machine Manager | 2007 | Да | Да | Да |
System Center Data Protection Manager | 2007 | Да | Нет | Нет |
Windows Сервер вычислительного кластера | 2007 | Да | Да | Нет |
Microsoft Transporter Suite для Lotus Domino | 08.02.0012 | 47 | Нет | Нет |
Microsoft PowerTools для Open XML | 1.0 | 33 | Нет | Нет |
IBM WebSphere MQ | 6.0.2.2 | 44 | Нет | Нет |
IoT Core Надстройки | 74 | Неизвестно | Неизвестно | |
Командная консоль Quest Management Shell для Active Directory | 1,7 | 95 | Нет | Нет |
Special Operations Software Specops Command | 1.0 | Да | Нет | Да |
VMware vSphere PowerCLI | 6.5 R1 | 500+ | Да | Да |
Internet Information Services | 7.0 | 54 | Да | Нет |
Windows 7 Центр устранения неполадок | 6.1 | Да | Нет | Да |
Развертывание Microsoft Инструментарий | 2010 | Да | Да | Да |
NetApp Набор инструментов PowerShell | 4.2 | 2000+ | Да | Да |
Планировщик JAMS - Система доступа к заданию и управления | 5.0 | 52 | Да | Да |
0,8 | 432 | Нет | Нет | |
Dell Equallogic | 3,5 | 55 | Нет | Нет |
5,8 | Да | Да | Да | |
0,4.1 | 39 | Нет | Нет |
Проект с именем Pash (название - игра слов на хорошо известном "bash «оболочка Unix») была с открытым исходным кодом и кроссплатформенной повторной реализацией PowerShell через платформу Mono. Pash был создан Игорем Мучником, написан на C # и выпущен под Стандартной общественной лицензией GNU. Разработка Pash застопорилась в 2008 году, была перезапущена на GitHub в 2012 году и, наконец, прекратилась в 2016 году, когда PowerShell официально стал открытым и кроссплатформенным.
В Викиверситете есть обучающие ресурсы по PowerShell |