PowerShell - PowerShell

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

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

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

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

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

Фон

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

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

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

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

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

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

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

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

Разработка 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-разрядных платформ.[15]

Windows 10 предоставила платформу тестирования для PowerShell.[16]

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

Дизайн

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

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

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

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

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

Командлеты

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

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

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

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

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

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

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

ВерсияКомандлеты
Windows PowerShell 1.0129[33]
Windows PowerShell 2.0632[34]
Windows PowerShell 3.0около 1000[35]
Windows PowerShell 4.0?
Windows PowerShell 5.0около 1300[36]
Windows PowerShell 5.11586[нужна цитата ]
PowerShell Core 6.0?
PowerShell Core 6.1?
PowerShell Core 6.2?
PowerShell 7.01507[нужна цитата ]
PowerShell 7.1?

Трубопровод

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

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

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

Сценарии

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

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

С использованием функция ключевое слово PowerShell обеспечивает создание функций следующего общего вида:[49]

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

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

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

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

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

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

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

Специальные символы PowerShell
ХарактерОписание
`0Ноль
Тревога
Backspace
Побег
`fПодача формы
`пНовая линия
Возврат каретки
Горизонтальная вкладка
`u {x}Unicode escape-последовательность
`vВертикальная табуляция
--%Прекратить синтаксический анализ

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

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

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

Хостинг

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

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

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

Желаемая конфигурация состояния

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

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

Версии

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

Windows PowerShell 1.0

PowerShell 1.0 был выпущен в ноябре 2006 г. для Windows XP с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 1 (SP1) и Виндоус виста.[58] Это необязательный компонент Windows Server 2008.

Windows PowerShell 2.0

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

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

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

Новые возможности PowerShell 2.0 включают:[64][65][66]

  • Удаленное взаимодействие PowerShell: С помощью WS-Management, PowerShell 2.0 позволяет запускать сценарии и командлеты на удаленном компьютере или большом наборе удаленных компьютеров.
  • Фоновые задания: Также называется PSJob, он позволяет асинхронно вызывать последовательность команд (сценарий) или конвейер. Задания можно запускать на локальном компьютере или на нескольких удаленных машинах. Интерактивный командлет в PSJob блокирует выполнение задания до тех пор, пока не будет предоставлен ввод пользователя.
  • Сделки: Включите командлет, и разработчики могут выполнить транзакционные операции. PowerShell 2.0 включает командлеты транзакций для запуска, фиксации и отката PSTransaction а также функции для управления и направления транзакции для участвующих командлетов и операций поставщика. Поставщик реестра PowerShell поддерживает транзакции.
  • Расширенные функции: Это командлеты, написанные с использованием языка сценариев PowerShell. Первоначально эта функция называлась «командлетами сценария», но позже была переименована в «расширенные функции».[67]
  • СтепныеТрубопроводы: Это позволяет пользователю контролировать, когда BeginProcessing (), ProcessRecord () и EndProcessing () вызываются функции командлета.
  • Модули: Это позволяет разработчикам и администраторам сценариев организовывать и разбивать сценарии PowerShell в автономные многоразовые блоки. Код из модуль выполняется в собственном автономном контексте и не влияет на состояние вне модуля. Модули могут определять среду с ограниченным пространством выполнения с помощью сценария. У них есть постоянное состояние, а также публичные и частные члены.
  • Язык данных: Зависящее от домена подмножество языка сценариев PowerShell, которое позволяет отделить определения данных от сценариев и позволяет локализованный строковые ресурсы, которые нужно импортировать в скрипт во время выполнения (Интернационализация скрипта).
  • Отладка скрипта: Это позволяет контрольные точки для установки в скрипте или функции PowerShell. Точки останова могут быть установлены в строках, строках и столбцах, командах и доступе для чтения или записи переменных. Он включает набор командлетов для управления точками останова с помощью скрипта.
  • Троеборье: Эта функция позволяет прослушивать, перенаправлять и действовать в отношении событий управления и системы. Событие позволяет узлам PowerShell получать уведомления об изменениях состояния их управляемых сущностей.Он также позволяет сценариям PowerShell подписаться на ObjectEvents, PSEvents, и WmiEvents и обрабатывать их синхронно и асинхронно.
  • Интегрированная среда сценариев Windows PowerShell (ISE): PowerShell 2.0 включает хост PowerShell на основе графического интерфейса, который предоставляет интегрированный отладчик, подсветка синтаксиса, автозавершение вкладок и до 8 консолей PowerShell с поддержкой Unicode (пространства выполнения) в пользовательском интерфейсе с вкладками, а также возможность запускать только выбранные части в сценарии.
  • Передача файлов по сети: Встроенная поддержка приоритетной, регулируемой и асинхронной передачи файлов между машинами с использованием Фоновая интеллектуальная служба передачи (БИТЫ).[68]
  • Новые командлеты: Включая Out-GridView, который отображает табличные данные в WPF Вид сетки объект, в системах, которые это позволяют, и если ISE установлен и включен.
  • Новые операторы: -Расколоть, -Присоединиться, и Splatting (@) операторы.
  • Обработка исключений с помощью Try-Catch-finally: В отличие от других языков .NET, это позволяет использовать несколько типов исключений для одного блока catch.
  • Nestable Here-Strings: PowerShell Здесь-струны были улучшены и теперь могут гнездиться.[69]
  • Заблокировать комментарии: PowerShell 2.0 поддерживает блочные комментарии, используя <# и #> как разделители.[70]
  • Новые 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 с Service Pack 1, для Windows Server 2008 с Service Pack 1 и для Windows Server 2008 R2 с пакетом обновления 1.[71][72]

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

Новые функции PowerShell 3.0 включают:[72][76]:33–34

  • Запланированные задания: Задания можно запланировать для запуска на заранее установленное время и дату.
  • Подключение к сеансу: Сеансы можно отключать и снова подключать. Удаленные сеансы стали более терпимыми к временным сбоям сети.
  • Улучшенное написание кода: Автозавершение кода (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 с пакетом обновления 1 (SP1), Windows Server 2008 R2 SP1 и Windows Server 2012.[77]

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

  • Желаемая конфигурация состояния:[78][79][80] Расширения и инструменты декларативного языка, которые позволяют развертывать и управлять данными конфигурации для систем, использующих DMTF стандарты управления и WS-Management Протокол
  • Новая политика выполнения по умолчанию: На серверах Windows теперь политика выполнения по умолчанию - RemoteSigned.
  • Сохранить-Помощь: Теперь справку можно сохранить для модулей, установленных на удаленных компьютерах.
  • Расширенная отладка: Отладчик теперь поддерживает рабочие процессы отладки, удаленное выполнение скриптов и сохранение сеансов отладки при повторных подключениях сеансов PowerShell.
  • -PipelineVariable переключатель: Новый повсеместный параметр, показывающий текущий объект конвейера как переменную для целей программирования.
  • Сетевая диагностика для управления физическими и виртуализированными Hyper-V сетевые коммутаторы
  • Где и для каждого Синтаксис метода предоставляет альтернативный метод фильтрации и перебора объектов.

Windows PowerShell 5.0

Значок PowerShell 5.0

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

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

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

Windows PowerShell 5.1

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

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

PowerShell Core 6

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

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

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

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

PowerShell 7

PowerShell 7 - это продукт, заменяющий продукты PowerShell Core 6.x, а также Windows PowerShell 5.1, которая является последней поддерживаемой версией Windows PowerShell.[96][94] Основное внимание при разработке уделялось тому, чтобы сделать PowerShell 7 жизнеспособной заменой Windows PowerShell 5.1, то есть иметь почти равный с Windows PowerShell с точки зрения совместимости с модулями, поставляемыми с Windows.[97]

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

  • В -Параллельный переключатель для ForEach-Object командлет для обработки параллельной обработки
  • Почти паритет с Windows PowerShell с точки зрения совместимости со встроенными модулями Windows
  • Новый просмотр ошибок
  • В Get-Ошибка командлет
  • Операторы цепочки конвейеров (&& и ||), которые позволяют условное выполнение следующего командлета в конвейере
  • В ?: оператор для тернарная операция
  • В ??= оператор, который присваивает значение переменной, только когда существующее значение переменной ноль
  • В ?? оператор для нулевое слияние
  • Кроссплатформенность Invoke-DscResource (экспериментальный)
  • Возвращение Out-GridView командлет
  • Возвращение -Витрина переключатель для Получить помощь

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

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

Сравнение командлетов PowerShell с внутренними и внешними командами других интерпретаторов командной строки
PowerShell (командлет)PowerShell (псевдоним)Командная строка WindowsОболочка UnixОписание
Get-ChildItemgci, dir, lsрежlsСписок всех файлов и папок в текущей или заданной папке
Тестовое соединение[а]пингпингпингОтправляет Эхо-запросы ICMP на указанную машину с текущей машины или поручает другой машине сделать это
Get-Contentgc, тип, коттипКотПолучает содержимое файла
Get-Commandгсмпомощьтип, который, compgenСписок доступных команд
Получить помощьпомогите, чувакпомощьпо поводу, человекПечатает документацию по команде на консоли
Clear-Hostcls, ясноclsЧистоОчищает экран[b]
Копировать элементcpi, копировать, cpкопировать, xcopy, РобокопияcpКопирует файлы и папки в другое место
Переместить предметми, двигаться, мвдвигатьсямвПеремещает файлы и папки в новое место
Убрать предметри, дель, стирание, rmdir, rd, rmдель, стереть, rmdir, rdrm, rmdirУдаляет файлы или папки
Rename-Itemрни, рен, мвRen, переименоватьмвПереименовывает отдельный файл, папку, жесткую ссылку или символическую ссылку
Get-Locationgl, cd, pwdCDpwdОтображает рабочий путь (текущая папка)
Pop-LocationpopdpopdpopdИзменяет рабочий путь к месту, которое было помещено в стек последним.
Push-LocationтолкатьтолкатьтолкатьСохраняет рабочий путь в стек
Set-Locationsl, cd, chdirCD, чдирCDМеняет рабочий путь
Тройник-ОбъекттройникНет данныхтройникКаналы вводят в файл или переменную, передавая ввод по конвейеру
Запись-выводэхо, написатьэхоэхоПечатает строки или другие объекты на стандартный вывод
Get-Processgps, pstlist,[c] список заданий[d]псСписок всех запущенных процессов
Остановить процессspps, убитьубийство,[c] Taskkill[d]убийство[e]Останавливает запущенный процесс
Выбрать строкуslsfindstrнайти, grepПечатает линии, соответствующие шаблону
Установить переменнуюсв, установитьнаборenv, экспорт, набор, setenvСоздает или изменяет содержимое переменная окружения
Invoke-WebRequestiwr, curl, wget[f]завиток[100]wget, завитокПолучает содержимое с веб-страницы в Интернете

Примечания

  1. ^ Хотя внешний пинг команда остается доступной для PowerShell, вывод Test-Connection представляет собой структурированный объект что можно проверить программно.[99]
  2. ^ Clear-Host реализован как предопределенная функция PowerShell.
  3. ^ а б Доступно в Windows NT 4, Комплект ресурсов Windows 98, Инструменты поддержки Windows 2000
  4. ^ а б Представлено в Windows XP Professional Edition
  5. ^ Также используется в UNIX для отправки любого процесса сигнал, сигнал "Завершить" - это просто сигнал по умолчанию
  6. ^ завиток и wget псевдонимы отсутствуют в PowerShell Core, чтобы не мешать вызову родных команд с похожими именами.

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

РасширениеОписание
.ps1Файл сценария[101]
.psd1Файл манифеста модуля; обычно поставляется с модулем сценария или двоичным модулем[102]
.psm1Файл модуля скрипта[103]
.dllDLL -соответствующий[а] файл двоичного модуля[104]
.ps1xmlФайл определений формата и типа[44][105]
.xmlXML -соответствующий[b] сериализованный файл данных[106]
.psc1Консольный файл[107]
.psscФайл конфигурации сеанса[108]
.psrcФайл возможностей роли[109]
  1. ^ Библиотека с динамической компоновкой (DLL) не является форматом только для PowerShell. Это общий формат для хранения скомпилированного кода сборки .NET.
  2. ^ XML не является форматом только для PowerShell. Это популярный формат обмена информацией.

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

ЗаявлениеВерсияКомандлетыПровайдерГрафический интерфейс управления
Сервер обмена2007402дада
Windows Server2008дадаНет
Microsoft SQL Server2008дадаНет
Microsoft SharePoint2010дадаНет
System Center Configuration Manager2012 R2400+даНет
System Center Operations Manager200774даНет
Диспетчер виртуальных машин System Center2007дадада
System Center Data Protection Manager2007даНетНет
Сервер вычислительного кластера Windows2007дадаНет
Microsoft Transporter Suite для Лотос домино[110]08.02.001247НетНет
Microsoft PowerTools для Open XML[111]1.033НетНет
IBM WebSphere MQ[112]6.0.2.244НетНет
Ядро Интернета вещей Дополнения[113]74НеизвестноНеизвестно
Командная консоль Quest Management Shell для Active Directory[114]1.795НетНет
Командование спецназа специального назначения[115]1.0даНетда
VMware vSphere PowerCLI[116]6.5 R1500+дада
Информационные службы Интернета[117]7.054даНет
Windows 7 Центр устранения неполадок[118]6.1даНетда
Набор средств развертывания Microsoft[119]2010дадада
NetApp Набор инструментов PowerShell[120][121]4.22000+дада
Планировщик JAMS - Доступ к вакансиям и система управления[122]5.052дада
МАУ автоматизация[123]0.8432НетНет
Dell Equallogic[124]3.555НетНет
ВХОД[125]5.8дадада
SePSX[126]0.4.139НетНет

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

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

Смотрите также

Рекомендации

  1. ^ «PowerShell / PowerShell». GitHub. Получено 2020-11-11.
  2. ^ "v7.1.0-rc.2, выпуск PowerShell". Репозиторий GitHub PowerShell. Получено 2020-10-20.
  3. ^ «PowerShell для любой системы!». 12 июня 2017 г. - через GitHub.
  4. ^ Сновер, Джеффри (25 мая 2008 г.). «PowerShell и WPF: WTF». Блог Windows PowerShell. Microsoft.
  5. ^ а б c Брайт, Питер (2016-08-18). «PowerShell - это последняя версия Microsoft с открытым исходным кодом, которая появится в Linux, OS X». Ars Technica. Condé Nast. В архиве из оригинала 2020-04-09. Получено 2020-05-12.
  6. ^ а б c d е «Как работает Windows PowerShell». Сеть разработчиков Microsoft. Microsoft. Получено 2007-11-27.
  7. ^ Truher, Джим (декабрь 2007 г.). «Расширение Windows PowerShell с помощью настраиваемых команд». Журнал MSDN. Microsoft. Архивировано из оригинал 6 октября 2008 г.
  8. ^ Лоу, Скотт (4 января 2007 г.). «Exchange 2007: привыкайте к командной строке». TechRepublic. CBS Interactive. В архиве из оригинала на 2018-11-16. Получено 2020-05-12.
  9. ^ Сновер, Джеффри (13 ноября 2007 г.). "Поддержка SQL Server для PowerShell!". Блог Windows PowerShell (сообщение в блоге). Microsoft. Архивировано из оригинал на 2007-11-15. Получено 2007-11-13.
  10. ^ Драган, Ричард В. (23 апреля 2003 г.). «Windows Server 2003 обеспечивает всесторонние улучшения». Отзывы. Журнал ПК. Зифф Дэвис. Отличительной особенностью здесь является то, что практически все административные утилиты теперь работают из командной строки (и большинство из них доступны через telnet).
  11. ^ Биггар и Харбо (14 сентября 2017 г.). «Человек, стоящий за Windows PowerShell». Быть непрерывным (Подкаст). Heavybit. Получено 2017-09-14.
  12. ^ Сновер, Джеффри (2 августа 2002 г.). «Манифест монады - источник Windows PowerShell». Блог Windows PowerShell (запись в блоге). Microsoft.
  13. ^ «Прибыла Windows PowerShell (монада)». Блог Windows PowerShell. Microsoft. 25 апреля 2006 г.
  14. ^ Сновер, Джеффри (15 ноября 2006 г.). «Windows PowerShell и Windows Vista». Блог Windows PowerShell (сообщение в блоге). Microsoft.
  15. ^ «Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0 и BITS 4.0)». Поддерживать. Microsoft. 30 сентября 2013 года. Архивировано с оригинал 13 октября 2013 г.
  16. ^ "Что такое надоедливый и почему я должен волноваться?". 14 декабря 2015.
  17. ^ Сновер, Джеффри (18 августа 2016 г.). «PowerShell имеет открытый исходный код и доступен в Linux». Блог Microsoft Azure. Microsoft.
  18. ^ «PowerShell / PowerShell». GitHub. Получено 2016-08-18.
  19. ^ Хансен, Кеннет; Кальво, Ангел (18 августа 2016 г.). «PowerShell для Linux и с открытым исходным кодом!». Блог Windows PowerShell. Microsoft.
  20. ^ Фоли, Мэри Джо (18 августа 2016 г.). «Microsoft Open Source PowerShell; переносит его в Linux и Mac OS X». ZDNet. CBS Interactive.
  21. ^ а б «PowerShell на сервере Nano Server». TechNet. Microsoft. 20 октября 2016 г.
  22. ^ Пайетт, Брюс (2007). Windows PowerShell в действии. Серия Manning Pubs Co. Мэннинг. п. 27. ISBN  9781932394900. Получено 2016-07-22. Основной язык PowerShell основан на грамматике POSIX 1003.2 для Корн оболочка.
  23. ^ "about_Command_Precedence". TechNet. Microsoft. 8 мая 2014 года.
  24. ^ «Система расширенных типов Windows PowerShell». Получено 2007-11-28.
  25. ^ а б c «Командлеты Windows PowerShell». Получено 2007-11-28.
  26. ^ «Создание вашего первого командлета». Получено 2007-11-28.
  27. ^ "Get-Verb". TechNet. Microsoft. 8 мая 2014 года.
  28. ^ «Обзор командлета». MSDN. Microsoft. 8 мая 2014 года.
  29. ^ «Добавление параметров, обрабатывающих ввод из командной строки». Получено 2007-11-28.
  30. ^ «Добавление параметров, которые обрабатывают входные данные конвейера». Получено 2007-11-28.
  31. ^ «Поставщики Windows PowerShell». Получено 2010-10-14.
  32. ^ Примечания к выпуску PowerShell V2
  33. ^ Ёсизава, Томоаки; Рамос, Дурваль (29 сентября 2012 г.). «Командлеты PowerShell 1.0». Статьи TechNet. Microsoft.
  34. ^ Ёсизава, Томоаки (10 июля 2012 г.). «Командлеты PowerShell 2.0». Статьи TechNet. Microsoft.
  35. ^ Уилсон, Эд (2013). «1: Обзор Windows PowerShell 3.0». Windows Powershell 3.0, шаг за шагом. Севастополь, Калифорния: Microsoft Press. ISBN  978-0-7356-7000-6. OCLC  829236530. Windows PowerShell 3.0 содержит около 1000 командлетов в Windows 8.
  36. ^ Уилсон, Эд. «1: Обзор Windows PowerShell 5.0». Windows PowerShell, шаг за шагом (Третье изд.). Редмонд, Вашингтон: Microsoft Press. ISBN  978-1-5093-0043-3. OCLC  927112976. Windows PowerShell 5.0 включает около 1300 командлетов в Windows 10.
  37. ^ «Руководство пользователя Windows PowerShell: конвейеры и конвейеры в Windows PowerShell». TechNet. Microsoft. Получено 2011-09-27.
  38. ^ Джонс, Дон (2008). «Windows PowerShell - переосмысление конвейера». Microsoft TechNet. Microsoft. Получено 2007-11-28.
  39. ^ «Концепции объектов Windows PowerShell». Архивировано из оригинал 19 августа 2007 г.. Получено 2007-11-28.
  40. ^ «Как ДЕЙСТВИТЕЛЬНО работает форматирование и вывод PowerShell». Получено 2007-11-28.
  41. ^ «Еще - как на самом деле работает форматирование PowerShell?». Получено 2007-11-28.
  42. ^ "about_Pipelines". TechNet. Microsoft. 8 мая 2014 года.
  43. ^ "about_Objects". TechNet. Microsoft. 8 мая 2014 года.
  44. ^ а б "about_Format.ps1xml". TechNet. Microsoft. 8 мая 2014 года.
  45. ^ «Анонимные функции и блоки кода в PowerShell». Получено 2012-01-21.
  46. ^ «Введение в переменные Windows PowerShell». Получено 2007-11-28.
  47. ^ «Преобразование байтов». Совет недели по Windows PowerShell. Получено 15 ноября 2013.
  48. ^ Равикант (20 мая 2013 г.). «Преобразование в единицы размера (КБ, МБ, ГБ, ТБ и ПБ) без использования множителей PowerShell». Журнал PowerShell.
  49. ^ а б c "about_Functions". Microsoft TechNet. Microsoft. 17 октября 2013 г.. Получено 15 ноября 2013.
  50. ^ а б «Легкое тестирование с помощью Windows PowerShell». Получено 2007-11-28.
  51. ^ Ангелопулос, Алекс; Карен, Бемовски (4 декабря 2007 г.). "PowerShell сообразила умные котировки". Windows для ИТ-специалистов. Пентон Медиа. Получено 15 ноября 2013.
  52. ^ «О специальных символах». Powershell / Скрипты. Microsoft. 8 июня 2017 г.. Получено 20 июня, 2019.
  53. ^ "Ловушка [Исключение] {" В PowerShell "}". Получено 2007-11-28.
  54. ^ «Запуск сценариев Windows PowerShell». Получено 2007-11-28.
  55. ^ "about_Signing". Microsoft TechNet. Microsoft. 17 октября 2013 г.. Получено 15 ноября 2013.
  56. ^ Ли Холмс (сентябрь 2006 г.). Краткое руководство по Windows PowerShell. O'Reilly Media.
  57. ^ eslesar. «Обзор конфигурации желаемого состояния Windows PowerShell». msdn.microsoft.com.
  58. ^ Чанг, Леонард; Сновер, Джеффри; Кумаравел, Арул (14 ноября 2006 г.). «Готово! Выпущена Windows PowerShell 1.0!». Блог Windows PowerShell. Microsoft.
  59. ^ «PowerShell будет установлен по умолчанию на Windows Server 08 R2 (WS08R2) и Windows 7 (W7)!». Блог Windows PowerShell. Microsoft. 2008-10-28. Получено 2011-09-27.
  60. ^ "Windows Management Framework уже здесь!". 2009-10-27. Получено 2009-10-30.
  61. ^ «База знаний службы поддержки Microsoft: Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0 и BITS 4.0)». Support.microsoft.com. 2011-09-23. Получено 2011-09-27.
  62. ^ "574 причины, по которым мы так гордимся и оптимистично относимся к W7 и WS08R2". Блог Windows PowerShell. Microsoft. 2008-10-29. Получено 2011-09-27.
  63. ^ Сновер, Джеффри (2008). «PowerShell: создание управляемых веб-служб». Архивировано из оригинал 13 октября 2008 г.. Получено 19 июля, 2015.
  64. ^ «Что нового в CTP в PowerShell 2.0». Получено 2007-11-28.
  65. ^ «Windows PowerShell V2 Community Technology Preview 2 (CTP2) - releaseNotes». Архивировано из оригинал 6 мая 2008 г.. Получено 2008-05-05.
  66. ^ «Различия между PowerShell 1.0 и PowerShell 2.0». Получено 2010-06-26.
  67. ^ Джонс, Дон (май 2010 г.). «Windows PowerShell: написание командлетов в сценарии». Журнал TechNet. Microsoft.
  68. ^ «GoGrid Snap-in - управление облачными сервисами с помощью PowerShell». Блог Windows PowerShell. Microsoft. 2008-10-14. Получено 2011-09-27.
  69. ^ «Emit-XML». Блог Windows PowerShell. Microsoft. 2008-10-17. Получено 2011-09-27.
  70. ^ «Блокировать комментарии в версии 2». Блог Windows PowerShell. Microsoft. 2008-06-14. Получено 2011-09-27.
  71. ^ Ли, Томас (13 августа 2012 г.). "PowerShell Version 3 - это RTM!". Под лестницей. Получено 2012-08-13.
  72. ^ а б c «Windows Management Framework 3.0». Центр загрузок. Microsoft. 4 сентября 2012 г.. Получено 2012-11-08.
  73. ^ «Предварительная версия Windows Management Framework 3.0 Community Technology Preview (CTP) №2 доступна для загрузки». Блог Windows PowerShell. Microsoft. 2 декабря 2011 г.
  74. ^ «Windows Management Framework 3.0». Центр загрузок. Microsoft. 3 декабря 2012 г.
  75. ^ Хофре, ХуанПабло (14 декабря 2016 г.). «Системные требования Windows PowerShell». Сеть разработчиков Microsoft. Microsoft. Получено 20 апреля, 2017.
  76. ^ Ханикатт, Джерри (2012). Вулли, Валери (ред.). Представляем Windows 8: обзор для ИТ-специалистов. Редмонд, Вашингтон: Microsoft Press. ISBN  978-0-7356-7050-1.
  77. ^ «Windows Management Framework 4.0 теперь доступна». Microsoft. 24 октября 2013 г.. Получено 4 ноября 2013.
  78. ^ Леви, Шей (25 июня 2013 г.). «Новые возможности Windows PowerShell 4.0». Журнал PowerShell. Получено 26 июн 2013.
  79. ^ «Требуемая конфигурация состояния в Windows Server 2012 R2 PowerShell». Канал 9. Microsoft. 3 июня 2013 г.. Получено 26 июн 2013.
  80. ^ Холл, Адриан (7 июня 2013 г.). «Мысли Microsoft TechEd North America». Блоги: Советы и хитрости. Splunk. Получено 26 июн 2013.
  81. ^ «Пакеты Windows Management Framework (WMF) 5.0 RTM были переизданы». Блог Windows PowerShell. Microsoft. 24 февраля 2016 г.
  82. ^ «Вопросы и ответы». GitHub. Получено 21 апреля 2015.
  83. ^ Сновер, Джеффри (2014-04-03). «Предварительная версия Windows Management Framework V5». blogs.technet.com. Microsoft. Архивировано из оригинал на 2014-06-30. Получено 2015-04-21.
  84. ^ - говорит Яап Брассер (2 августа 2016 г.). "#PSTip Новые команды PowerShell в юбилейном обновлении Windows 10".
  85. ^ «Что нового в Windows Server 2016 Standard Edition, часть 9 - Управление и автоматизация».
  86. ^ "Модуль Microsoft.PowerShell.LocalAccounts". technet.microsoft.com.
  87. ^ «Представляем предварительную версию Windows Management Framework (WMF) 5.1».
  88. ^ «WMF 5.1». Центр загрузки Microsoft.
  89. ^ Айелло, Джоуи (11 января 2018 г.). «PowerShell Core 6.0: общедоступно (GA) и поддерживается!». Блог команды PowerShell. Microsoft. В архиве из оригинала 11 июня 2018 г.. Получено 11 июн 2018.
  90. ^ Айелло, Джоуи; Уилер, Шон (10 января 2018 г.). «Жизненный цикл поддержки PowerShell Core». Документы Microsoft. Microsoft.
  91. ^ Кальво, Ангел (11 января 2018 г.). «10 самых интересных причин для миграции». PowerShell AMA. Microsoft.
  92. ^ Айелло, Джоуи (13 сентября 2018). «Представляем PowerShell Core 6.1». devblogs.microsoft.com. Microsoft. Получено 2019-06-01.
  93. ^ «PowerShell / PowerShell». GitHub. Получено 2020-06-22.
  94. ^ а б c Ли, Стив (2019-04-05). «Следующий выпуск PowerShell - PowerShell 7». Microsoft. Получено 2019-06-01.
  95. ^ Ли, Стив (2019-03-28). «Общедоступность PowerShell Core 6.2». devblogs.microsoft.com. Microsoft. Получено 2019-06-01.
  96. ^ Маки, Курт (30.05.2019). «Microsoft выпускает предварительную версию PowerShell 7». 1105 Media Inc. Получено 2019-06-01.
  97. ^ Ли, Стив (30.05.2019). «Дорожная карта PowerShell 7». devblogs.microsoft.com. Microsoft. Получено 2020-08-12.
  98. ^ PowerShell 7, предварительная версия 5 | PowerShell
  99. ^ «Тест-соединение». Документация по PowerShell. Microsoft. 9 августа 2015.
  100. ^ Tar и Curl приходят в Windows! - Техническое сообщество Microsoft - 382409
  101. ^ Уилер, Шон (2 июня 2020 г.). «О скриптах». Документы Microsoft. Microsoft.
  102. ^ Уиллер, Шон; Сматлак, Дэвид; Уилсон, Чейз (16 октября 2019 г.). «Как написать манифест модуля PowerShell». Документы. Microsoft.
  103. ^ Уиллер, Шон; Сматлак, Давид (22 ноября 2019 г.). «Как написать модуль сценария PowerShell». Документы Microsoft. Microsoft.
  104. ^ Уиллер, Шон (13 ноября 2016 г.). «Как написать двоичный модуль PowerShell». Документы Microsoft. Microsoft.
  105. ^ Уиллер, Шон; Хофре, Хуан Пабло; Воробьев, Сергей; Николаев, Кирилл; Коултер, Дэвид (2 июня 2020 г.). "О Types.ps1xml". Документы Microsoft. Microsoft.
  106. ^ Уиллер, Шон. «Экспорт-Clixml». Документы Microsoft. Microsoft.
  107. ^ Уиллер, Шон; Хофре, Хуан Пабло; Воробьев, Сергей; Николаев, Кирилл; Коултер, Дэвид. «Экспорт-Консоль». Документы Microsoft. Microsoft.
  108. ^ Уилер, Шон (2 июня 2020 г.). «О файлах конфигурации сеанса». Документы Microsoft. Microsoft.
  109. ^ Уилер, Шон (2 июня 2020 г.). «New-PSRoleCapabilityFile». Документы Microsoft. Microsoft.
  110. ^ «Microsoft Transporter Suite для Lotus Domino». Получено 2008-03-07.
  111. ^ «PowerTools для Open XML». Получено 2008-06-20.
  112. ^ «MO74: WebSphere MQ - библиотека Windows PowerShell». Получено 2007-12-05.
  113. ^ «Параметры командной строки надстроек IoT Core». Получено 2020-06-13.
  114. ^ «Команды PowerShell для Active Directory от Quest Software». Получено 2008-07-02.
  115. ^ «Удаленное взаимодействие PowerShell через групповую политику». Получено 2007-12-07.
  116. ^ «VMware vSphere PowerCLI». Получено 2014-09-09.
  117. ^ «Windows PowerShell: IIS7 PowerShell Provider Tech Preview 2». Получено 2008-07-03.
  118. ^ «Престижность команде диагностики Win7». Получено 2009-06-15.
  119. ^ Майкл, Нихаус (10 июля 2009 г.). «Новая функция MDT 2010 №16: поддержка PowerShell». Получено 2014-10-27.
  120. ^ «Престижность NetApp за Data ONTAP PowerShell ToolKit». Получено 2010-06-15.
  121. ^ «Объявление о наборе инструментов PowerShell 4.2». Получено 2016-09-07.
  122. ^ «Гетерогенное планирование заданий с помощью PowerShell». Получено 2010-09-15.
  123. ^ «Расширения PowerShell UIAutomation». Получено 2012-02-16.
  124. ^ «EqualLogic HIT-ME с PowerShell». Получено 2012-03-09.
  125. ^ de: LOGINventory
  126. ^ "Расширения Selenium PowerShell". Получено 2012-08-20.
  127. ^ а б «Паш». SourceForge. Dice Holdings, Inc. Получено 2011-09-27.
  128. ^ "Паш Проект". Получено 2013-04-10.
  129. ^ «Pash теперь устарел · Проблема № 429 · Pash-Project / Pash». GitHub. Получено 2019-11-26.

дальнейшее чтение

внешняя ссылка