Что значит попробуйте новую кроссплатформенную оболочку powershell
Представляем PowerShell 7.0
Сегодня мы рады объявить о выпуске общедоступной (GA) версии PowerShell 7.0! Прежде всего, мы хотели бы поблагодарить наших многочисленных контрибьюторов за то, что сделали этот выпуск возможным, поделившись кодом, тестами, документацией и отзывами о проблемах. PowerShell 7 не был бы возможен без вашей помощи.
Что такое PowerShell 7?
После трех успешных выпусков PowerShell Core мы рады выходу PowerShell 7, следующей главе непрерывного развития PowerShell. В PowerShell 7, в дополнение к обычному множеству новых командлетов/API и исправлений ошибок, мы представляем ряд новых функций, в том числе:
Если вы не могли использовать PowerShell Core 6.x в прошлом из-за проблем с совместимостью модулей, это может быть ситуацией, когда вы воспользуетесь некоторыми из функций, которые мы уже предоставили с момента запуска проекта Core!
Круто! Как получить PowerShell 7?
Для начала, изучите документацию по установке для Windows, macOS, или Linux. В зависимости от версии вашей ОС и предпочтительного формата пакета может быть несколько способов установки.
Если вы уже знаете, что делать, и просто ищете бинарный пакет (будь то MSI, ZIP, RPM или что-то еще), перейдите к нашему тегу последней версии на GitHub.
Кроме того, вы можете использовать один из наших многочисленных образов Docker. Для получения дополнительной информации об их использовании, ознакомьтесь с нашим репозиторием PowerShell-Docker.
Какие операционные системы поддерживает PowerShell 7?
PowerShell 7 поддерживает следующие ОС на x64, включая:
Хотя это официально не поддерживается, сообщество также предоставило пакеты для Arch и Kali Linux.
Подождите, что случилось с PowerShell «Core»?
PowerShell 7 будет по-прежнему отмечаться в издании «Core», чтобы отличить 6.x/7.x от Windows PowerShell, но в целом вы увидите, что в дальнейшем он будет обозначаться как «PowerShell 7».
Какие продукты Microsoft уже поддерживают PowerShell 7?
Любой модуль, который уже поддерживается PowerShell Core 6.x, также поддерживается в PowerShell 7, включая:
Для тех модулей, которые по-прежнему несовместимы, мы работаем с рядом коллег, чтобы добавить встроенную поддержку PowerShell 7, включая Microsoft Graph, Office 365 и другие.
Что дальше?
Мы уже усердно работаем над PowerShell 7.1, и вы можете ожидать его первого превью в ближайшее время, изобилующего новыми функциями и исправлениями, которые не вошли в 7.0. Следите за более подробным блогом с дорожной картой, в котором изложены наши текущие исследования и желания для 7.1.
Обновление версии PowerShell в Windows
В этой статье мы рассмотрим, как обновить версию Windows PowerShell до актуальной 5.1 и установить (обновить) PowerShell Core 7.1. В предыдущей статье мы рассказывали, что на данный момент есть две ветки PowerShell: старая версия Windows PowerShell (максимальная версия 5.1, которая более не развивается) и новая платформа PowerShell Core (сейчас доступна версия 7.1). Несмотря на то, что нумерация версий PowerShell продолжается с 5.1 (6.0, 6.1, 7.0 и т.д.), это две разные платформы. Соответственно мы рассмотрим отдельно как обновить Windows PowerShell и PowerShell Core.
Обновление Windows PowerShell до 5.1
Попробуем обновить версию Windows PowerShell в Windows Server 2012 R2 до версии 5.1.
По-умолчанию Windows Server 2012 R2 (Windows 8.1) устанавливается с версией 4.0.
Сначала проверим текущую версию PowerShell (на скриншоте видно, что это PowerShell 4.0):
Скачайте WMF 5.1 для Windows Server 2012 R2 — Win8.1AndW2K12R2-KB3191564-x64.msu (https://go.microsoft.com/fwlink/?linkid=839516).
Установите MSU файл Windows Management Framework 5.1.
После перезагрузки сервера, запустите консоль PS и убедитесь, что версия была обновлена до PowerShell 5.1.
Установка/обновление PowerShell Core 7.1
Обратите внимание, что последняя версия Windows PowerShell, устанавливаемая в Windows 10 и Windows Server 2019 — PowerShell 5.1. Вместо нее Microsoft начала разрабатывать кроссплатформенную версию PowerShell Core. На данный момент доступны версии PowerShell Core 6.0, 6.1, 6.2, 7.0 и 7.1. По сути, PowerShell Core это новая платформа, которая устанавливается в системе вместе с Windows PowerShell. Т.е. нельзя обновить PowerShell 5.1 до PowerShell Core 7.1. PowerShell 7 устанавливается на компьютере отдельно от Windows PowerShell 5.1.
Если у вас уже установлен PowerShell Core 6.0, вы можете обновить версию PowerShell на своем компьютере до последней версии PowerShell Core 7.1 (либо можно установить PowerShell Core 7.1 рядом с Windows PowerShell 5.1). В этом примере мы попробуем обновить версию PowerShell Core в Windows 10 20H2. Есть два способа обновления:
Если вы хотите установить PowerShell Core с помощью MSI пакета, перейдите на старицу проекта https://github.com/PowerShell/PowerShell, найдите последний стабильный релиз (на момент написания статьи это v7.1.3 Release of PowerShell от 4 марта. Доступны также более новые v7.2.0-preview Release of PowerShell, но лучше пока не ставить их до выхода стабильной версии. Разверните список Assets и найдите пакет для вашей версии Windows (PowerShell-7.1.3-win-x64.msi или PowerShell-7.1.3-win-x86.msi).
Скачайте msi файл и установите его.
msiexec.exe /package PowerShell-7.1.3-win-x64.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1
Вы можете обновить PowerShell непосредственно из консоли.
Обновим (установим) последнюю версию PoSh Core с помощью команды:
Данная команда загружает установочный MSI файл PowerShell 7.1 с GitHub и запускает установку, затем запускается установка через MSI Installer.
После окончания установки открывается окно PowerShell Core (pwsh.exe), проверьте версию PowerShell и убедитесь, что теперь это PoSh 7.1.3.
Если у вас установлен пакетный менеджер WinGet, вы можете установить или обновить версию PowerShell до актуальной командой:
Либо можно установить конкретную версию PowerShell Core:
При использовании менеджера пакетов Chocolatey, используйте команды (для 5.1):
Для обновления PowerShell 7.x:
Т.е. теперь на этом компьютере есть две версии: Windows PowerShell 5.1 и PowerShell Core 7.1.
(Get-Command ‘C:\Program Files\PowerShell\7\pwsh.exe’).Version
Так можно проверить на удаленном компьютере:
Чтобы запустить предыдущую версию PowerShell, например 4, используйте команду:
Установка PowerShell Core через Microsoft Store
В Windows 10 вы можете установить или обновить PowerShell через магазин приложений Microsoft Store. Приложение PowerShell можно найти в магазине вручную или воспользуйтесь этой ссылкой. Преимущество такого способа установки – приложение Store будет автоматически контролировать установленную версию PowerShell и автоматически устанавливать обновления по мере появления.
Но есть и недостатки, связанные с тем, что такой PowerShell будет запускаться в песочнице.
Обновление PowerShell Core с помощью GPO
В домене Active Directory вы можете централизованно установить и обновить PowerShell Core с помощью групповой политики. Воспользуйтесь возможностями GPO по установке MSI пакетов.
Обновление PowerShell на удаленных компьютерах
Для обновления PowerShell на удаленных компьютерах через командную строку можно воспользоваться одним из следующих способов.
Первый способ позволяет удаленно обновить PowerShell на компьютере с помощью MSI установщика в сетевом каталоге:
Следующий скрипт позволит выбрать все активные компьютеры с Windows 10 из домена Active Directory и запустить на каждом из них загрузку и установку PowerShell Core:
Иначе вы подключитесь к точке PowerShell Remoting 5.1.
Обновление PowerShell в Linux дистрибутивах чаще проще всего выполняется через нативный менеджер пакетов.
Как установить или обновить PowerShell до последней версии в Windows 10
PowerShell is Microsoftрасширенная консоль, установленная по умолчанию во всех версиях Windows начиная с Windows 7 SP1. Эта консоль намного более продвинутая и полная, чем CMD, поэтому для более продвинутых пользователей это один из лучших способов управления и контроля операционной системы.
Когда мы устанавливаем Windows 10 с нуля, эта консоль устанавливается и включается по умолчанию. Тем не менее, даже самая последняя версия Windows 10 приносит устаревшая версия PowerShell обычно 5.1. Мы можем проверить версию, которую мы сейчас установили на нашем компьютере, открыв окно консоли и выполнив следующую команду:
Get-Host | Select-Object Version
Конечно, для большинства пользователей этой версии более чем достаточно, поскольку они, вероятно, не используют и не нуждаются в улучшениях и новостях о новых версиях PS. Однако, если мы являемся одним из тех, кому нравится всегда быть в курсе событий, здесь мы объясним, как установить последнюю версию PowerShell в Windows 10.
Что нового в PowerShell 7
PowerShell 5 Версия, установленная по умолчанию в Windows 10, является очень мощным инструментом, и для большинства пользователей более чем достаточно. Тем не менее, всегда есть возможности для улучшений, особенно для опытных пользователей и разработчиков, которые работают с этими типами сценариев.
Обновите PowerShell до последней версии
Ручной метод
Здесь мы найдем две разные версии. «Релиз» версия , которая соответствует последней стабильной версии программы, и «Предварительный просмотр» версия , более продвинутый, но нестабильный. Мы можем установить тот, который мы хотим, любой.
После того, как установщик загружен, мы запускаем его, и нам придется следовать за его помощником, как и любой другой программой. Разумеется, установка новой PowerShell абсолютно безопасна и не содержит никаких рекламных и нежелательных программ.
По завершении установки на ПК будет установлена последняя версия PowerShell.
Автоматический метод
Если мы не хотим загружать и устанавливать новую версию вручную, мы также можем обновить PowerShell из самой программы. Для этого нам нужно открыть окно PS с правами администратора и выполнить в нем следующую команду:
Это автоматически начнет загрузку последней стабильной версии с серверов Microsoft. Когда он будет загружен, установщик запустится, и нам придется завершить работу мастера самостоятельно, как и в предыдущем шаге.
Когда установщик завершит работу, у нас уже будет последняя версия PowerShell установлен в нашей операционной системе.
Как использовать новый PowerShell
Независимо от того, какой метод мы выбрали, эта версия действует как независимая программа, поэтому в Windows 10 мы по-прежнему будем устанавливать ее версию 5 вместе с этой новой версией. Мы можем найти новую оболочку PowerShell по следующему пути (по умолчанию): C> Program Files> PowerShell.
Чтобы запустить его, нам нужно всего лишь использовать поисковую систему Windows 10, и мы можем увидеть, как здесь появляется новая версия наряду с классической:
Проверьте новую установленную версию
Когда у нас будет установлен новый PowerShell, он будет отображаться как PowerShell 7 ”В поисковой системе и из пусковых установок, которые мы используем. Однако, если мы хотим быть уверены в установленной нами версии, мы можем очень легко проверить ее, выполнив следующую команду:
Get-Host | Select-Object Version
Отныне, когда появляются новые версии, само окно PowerShell будет уведомлять нас о его доступности. И мы можем использовать любой из двух предыдущих методов для установки этой новой версии.
Различия между Windows PowerShell 5.1 и PowerShell 7.x
В этой статье перечислены значительные различия и критические изменения в текущей версии PowerShell по сравнению с Windows PowerShell. В эту сводку не включены добавленные новые функции или командлеты. Кроме того, в этой статье обсуждаются изменения по сравнению с предыдущими версиями. Цель этой статьи — продемонстрировать текущее состояние PowerShell и отличия новой версии от Windows PowerShell. Подробное обсуждение изменений в новых версиях и новых функций см. в статье Новые возможности для каждой из версий.
Дополнительные сведения см. в разделах:
Терминология для продукта, используемая в документации
Документация по PowerShell состоит из двух типов содержимого: справочника по командлетам и концептуального содержимого. Справочник по командлетам предоставляется отдельно для каждой версии. Вы можете выбрать другую версию из раскрывающегося меню в верхнем левом углу страницы. При изменении версий концептуальное содержимое не изменяется. Как правило, основные понятия применимы ко всем версиям PowerShell, если только статья не относится к конкретной версии.
В комплект поставки модулей больше не входит PowerShell
По различным причинам совместимости следующие модули больше не включаются в PowerShell.
Рабочий процесс PowerShell
Рабочий процесс PowerShell — это компонент Windows PowerShell на основе Windows Workflow Foundation (WF). Он позволяет создавать надежные модули Runbook для долго выполняющихся или параллелизованных задач.
В будущем мы хотели бы реализовать собственный параллелизм в языке PowerShell без необходимости использовать рабочий процесс PowerShell.
Если нужно возобновить выполнение скрипта после перезагрузки операционной системы с помощью контрольных точек, рекомендуем использовать планировщик задач. Он позволит запустить скрипт при запуске ОС. Но скрипт должен поддерживать свое собственное состояние (например, сохранять его в файле).
Командлеты, удаленные из PowerShell
Для модулей, включенных в PowerShell, следующие командлеты удалены из PowerShell в целях совместимости или для использования неподдерживаемых API.
Командлеты инструментария WMI версии 1
Следующие командлеты WMI версии 1 удалены из PowerShell:
Командлеты модуля CimCmdlets (или WMI версии 2) выполняют ту же функцию и предоставляют новые функциональные возможности и переработанный синтаксис.
Командлет New-WebServiceProxy удален
.NET Core не поддерживает платформу Windows Communication Framework, которая предоставляет службы для использования протокола SOAP. Этот командлет удален, так как для него нужен протокол SOAP.
*-Transaction командлеты удалены
Эти командлеты использовали очень ограниченный объем использования. Было принято решение о прекращении их поддержки.
Командлеты *-EventLog
Из-за использования неподдерживаемых API командлеты *-EventLog были удалены из PowerShell. Get-WinEvent и New-WinEvent доступны для получения и создания событий в Windows.
Командлеты, использующие Windows Presentation Framework (WPF)
Изменения в PowerShell Desired State Configuration (DSC)
Invoke-DscResource восстановлена в качестве экспериментальной функции в PowerShell 7.0.
Начиная с версии PowerShell 7.2 модуль PSDesiredStateConfiguration удален из PowerShell и опубликован в коллекции PowerShell. Дополнительные сведения см. в объявлении в блоге, посвященном PowerShell Team.
Изменения модуля и языка
Переименование powershell.exe в pwsh.exe
Дополнительные изменения в pwsh(.exe) из powershell.exe :
Сокращенное имя также согласуется с именованием оболочек на платформах, отличных от Windows.
Поддержка выполнения скрипта PowerShell с использованием логического параметра
Поддержка PowerShell как оболочки UNIX по умолчанию
Настраиваемые оснастки
Оснастки PowerShell являются предшественниками модулей PowerShell, которые не имеют широкого распространения в сообществе PowerShell.
Из-за сложности поддержки оснасток и отсутствия их использования в сообществе мы больше не поддерживаем настраиваемые оснастки в PowerShell.
Флаги экспериментальных функций
Мы включили поддержку Экспериментальные возможности. Это позволяет разработчикам PowerShell предлагать новые функций и получать отзывы до завершения разработки новой версии. Благодаря этому мы можем не вносить критические изменения пока версия разрабатывается.
Сборка загружается из базового пути к модулю перед попыткой загрузить из глобального кэша сборок
Ранее, если двоичный модуль содержал сборку модуля в глобальном кэше сборок (GAC), мы загружали сборку из GAС и только после этого пытались загрузить ее из базового пути модуля.
Пропуск проверки элемента NULL для коллекций с типом элемента в виде типа значения
Для параметра Mandatory и атрибутов ValidateNotNull и ValidateNotNullOrEmpty пропускается проверка элемента NULL, если тип элемента коллекции является типом значения.
Предыдущая кодировка, ASCII (7 бит), в некоторых случаях приводила к неправильному изменению выходных данных. Если UTF-8 NoBOM становится кодировкой по умолчанию, выходные данные в Юникоде остаются в кодировке, поддерживаемой большинством инструментов и операционных систем.
Кодирование New-ModuleManifest изменено на UTF8NoBOM на платформах, отличных от Windows
Ранее New-ModuleManifest создавал манифесты psd1 в UTF-16 с меткой порядка байтов, создавая проблемы для инструментов Linux. Это критическое изменение, которое изменяет кодировку New-ModuleManifest на UTF (без метки порядка байтов) в платформах, отличных от Windows.
Атрибут AllScope удален из большинства псевдонимов по умолчанию
Чтобы ускорить создание области, атрибут AllScope был удален из большинства псевдонимов по умолчанию. Атрибут AllScope был оставлен для нескольких часто используемых псевдонимов, где поиск выполнялся быстрее.
В Windows PowerShell текущее значение языка и региональных параметров кэшируется, что позволяет рассинхронизировать значение с настройками языка и региональных параметров после запуска сеанса. Это поведение кэширования исправлено в PowerShell Core.
Разрешено переопределять явно заданным именованным параметром аналогичный параметр из сплаттинга хэш-таблицы
Добавлен оператор & для управления заданиями
Новые методы и свойства в PSCustomObject
Здесь также используются методы ForEach и Where методы, которые позволяют работать с элементами PSCustomObject и фильтровать их.
Преобразования из PSMethod в делегат
Изменения в командлетах
Проверка system32 на наличие совместимых встроенных модулей в Windows
В обновлении 1809 Windows 10 и Windows Server 2019 мы обновили несколько встроенных модулей PowerShell, и теперь они могут помечаться как совместимые с PowerShell.
Установка текущего каталога в качестве рабочего в Start-Job
Теперь командлет Start-Job использует текущий каталог в качестве рабочего каталога для нового задания.
Изменения в Format-Hex
Исправлена опечатка в имени свойства Get-ComputerInfo
BiosSerialNumber был написан с ошибкой (как BiosSeralNumber ). Теперь ошибка исправлена.
Добавлены командлеты Get-StringHash и Get-FileHash
Это изменение заключается в том, что некоторые хэш-алгоритмы не поддерживаются CoreFX, поэтому они больше недоступны:
Добавлена поддержка расширенного формата файла журнала W3C в Import-Csv
Ранее командлет Import-Csv не мог использоваться для непосредственного импорта файлов журнала в расширенный формат журнала W3C и требовалось дополнительное действие. Благодаря этому изменению теперь поддерживается расширенный формат журнала W3C.
Import-Csv применяет PSTypeNames при импорте, если информация о типе присутствует в CSV
Ранее командлет Export-CSV выводил комментарий в качестве первой строки, содержащей имя типа объекта. Это изменение исключает сведения о типе по умолчанию, поскольку они не понятны большинству инструментов CSV. Это изменение внесено с учетом отзывов клиентов.
Разрешено использовать * в пути реестра для Remove-Item
Командлет Group-Object теперь умеет сортировать группы
В рамках оптимизации производительности Group-Object возвращает отсортированный список групп. При этом порядок может быть произвольным, и может оказаться, что это не то, что вам нужно, если вам потребуется первая группа. Мы решили, что это изменение стоит реализовать из-за роста производительности и незначительной зависимости от прежнего поведения командлета.
Стандартное отклонение в Measure-Object
Удаление функции more
Теперь cd DriveName: возвращает пользователей в текущий рабочий каталог на этом диске
Раньше при использовании Set-Location или cd для возврата на PSDrive пользователи отправлялись в расположение по умолчанию для этого диска. Теперь пользователи отправляются в последний известный текущий рабочий каталог для данного сеанса.
Запуск Update-Help без прав администратора
По многочисленным просьбам Update-Help больше не требуется запускать от имени администратора. Теперь Update-Help по умолчанию сохраняет справку в папку пользователя.
Например, эта команда возвращает все службы, у которых нет зависимых служб.
Изменения в веб-командлетах
Invoke-RestMethod возвращает полезные сведения, если данные не возвращаются.
Изменения API
Удален класс AddTypeCommandBase
Класс AddTypeCommandBase был удален из Add-Type для повышения производительности. Этот класс используется только командлетом Add-Type и не должен влиять на пользователей.
Удален VisualBasic как поддерживаемый язык в Add-Type
Удалена поддержка RunspaceConfiguration
Из-за неверного положения параметра аргументы передавались в качестве входных данных, а не аргументов.
Реализован анализ escape-символов в Юникоде
Проблема привязки параметра с ValueFromRemainingArguments в функциях PS
ValueFromRemainingArguments теперь возвращает значения в виде массива, а не одного значения, которое само по себе являлось массивом.
Отменено использование CommandTypes.Workflow и WorkflowInfoCleaned
Очистка кода, связанного с использованием CommandTypes.Workflow и WorkflowInfo в System. Management. Automation.
Эти незначительные критические изменения в основном влияют на код поставщика справки.
Устранен перенос возвращаемого результата в PSObject при преобразовании ScriptBlock в делегат
Когда ScriptBlock преобразуется в тип делегата для использования в контексте C#, перенос результата в PSObject приводит к ненужным проблемам.
В результате этого изменения возвращается базовый объект.
Поддержка удаленного взаимодействия
Для удаленного взаимодействия PowerShell (PSRP) с помощью WinRM на платформах UNIX требуется проверка подлинности NTLM/Negotiate или базовая проверка подлинности по протоколу HTTPS. PSRP на macOS поддерживает только базовую проверку подлинности по протоколу HTTPS. Проверка подлинности на основе Kerberos не поддерживается для платформ, отличных от Windows.
PowerShell также поддерживает PSRP через SSH на всех платформах (Windows, macOS и Linux). Дополнительные сведения см. в разделе Удаленное взаимодействие по SSH в PowerShell.
PowerShell Direct для контейнеров сначала пытается использовать pwsh
PowerShell Direct входит в состав PowerShell и Hyper-V и позволяет подключаться к виртуальной машине Hyper-V или контейнеру без сетевого соединения или других служб удаленного управления PowerShell.
Enable-PSRemoting теперь создает отдельные конечные точки удаленного взаимодействия для предварительных версий
Enable-PSRemoting теперь создает две конфигурации сеанса удаленного взаимодействия.
Это полезно, если вы хотите, чтобы на одном компьютере было установлено и доступно несколько версий PowerShell 6.
Если вы еще не настроили WinRM, выходные данные могут отличаться.
Затем вы увидите отдельные конфигурации сеанса PowerShell для предварительных и стабильных сборок PowerShell 6, а также для каждой конкретной версии.
Данные телеметрии можно отключить только с помощью переменной среды
PowerShell отправляет основные данные телеметрии в корпорацию Microsoft при запуске. В эти данные входят имя ОС, версия ОС и версия PowerShell. Они позволяют нам лучше понимать среды, где используется PowerShell, а также приоритизировать новые функции и исправления.