1

Название говорит обо всем. Википедия говорит:

Проектирование [править] Разработчики PowerShell основывали основную грамматику инструмента на POSIX 1003.2. [21]

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

командлеты (программы .NET Framework, предназначенные для взаимодействия с PowerShell). Сценарии PowerShell (файлы с суффиксом .ps1). Функции PowerShell. Отдельные исполняемые программы. Если команда является отдельной исполняемой программой, PowerShell запускает ее в отдельном процессе; если это командлет, он выполняется в процессе PowerShell. PowerShell предоставляет интерактивный интерфейс командной строки, в котором можно вводить команды и отображать их вывод. Пользовательский интерфейс, основанный на консоли Win32, предлагает настраиваемое завершение вкладки. PowerShell позволяет создавать псевдонимы для командлетов, которые в текстовом формате PowerShell переводят в вызовы исходных команд. PowerShell поддерживает как именованные, так и позиционные параметры для команд. При выполнении командлета работа по связыванию значения аргумента с параметром выполняется самим PowerShell, но для внешних исполняемых файлов аргументы анализируются внешним исполняемым файлом независимо от интерпретации PowerShell.

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

Это указывает на то, что требуется .NET и что Linux dotnet недостаточно для запуска командлетов.

4 ответа4

4

Windows PowerShell и PowerShell Core

Следующие часто задаваемые вопросы детализируют различия.

PowerShell Core является преемником Windows PowerShell 5.1 и работает в Windows, Linux и macOS.

...

  1. Будут ли все мои старые сценарии Windows PowerShell работать на PowerShell Core, то есть обратно совместима ли PowerShell Core с Windows PowerShell?

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

  2. Будут ли все сценарии, которые я пишу для PowerShell Core, работать на всех поддерживаемых платформах?

    Базовые скрипты будут работать на всех платформах. Однако, учитывая огромные различия между поддерживаемыми платформами, вы должны протестировать каждый скрипт на всех платформах, на которых он должен работать.

  3. Все ли модули для Windows PowerShell работают на PowerShell Core?

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

  4. Могу ли я использовать все классы .NET Framework в PowerShell Core?

    Нет, PowerShell зависит от .NET Core, в котором отсутствуют многие функции .NET Framework.Например, в .NET Core отсутствуют Windows Presentation Foundation (WPF), Windows Forms и рабочий процесс Windows. Вы можете найти больше информации здесь.

(акцент мой)

Различия в источниках между версиями PowerShell - 4sysops

2

Вы можете легко определить это для себя, просто посмотрев на них обоих бок о бок.

Имеется в виду доступный модуль, командлеты и т.д.

PowerShell v6 / Core

https://docs.microsoft.com/en-us/powershell/scripting/powershell-scripting?view=powershell-6

PowerShell v6.0.1
Copyright (c) Microsoft Corporation. All rights reserved.

https://aka.ms/pscore6-docs
Type 'help' to get help.

PS D:\> (Get-Command -Module *).Count
425

PS D:\> (Get-Command -Name *).Count
1483



Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\> (Get-Command -Module *).Count
1529

PS C:\> (Get-Command -Name *).Count
2474

Итак, в вашем распоряжении в PSCore/v6 буквально меньше "1104" модулей и "945" командлетов . Так что, да, это зависит от того, какие вы используете и доступны ли они вообще.

Кроме того, чтобы попытаться приблизить PSCore к уровню Windows PowerShell, Microsoft выпустила пакет совместимости PowerShell. Еще...

Как сообщалось в прошлом месяце, доступен пакет совместимости Windows для ядра .NET. Это добавляет некоторые функции, отсутствующие в ядре .NET. «Эта функциональность актуальна ТОЛЬКО для компьютеров с Windows».

https://richardspowershellblog.wordpress.com/2018/01/04/windows-compatibility-pack

1

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

-2

Microsoft недавно выпустила PowerShell 6.0 для Linux и Windows. Два функционально взаимозаменяемы. Тем не менее, оба являются значительным отклонением от PowerShell 5.1 для Windows. Поэтому вы должны разработать для v 6, чтобы обеспечить совместимость.

Ваш менеджер пакетов будет обрабатывать любые зависимости.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .