Как поддерживать различные версии Powershell в DLL командлета Visual Studio

В нашей компании есть компьютеры с более ранней версией Powershell, так как не всем машинам разрешено получать определенные обновления из-за зависимостей. Я использую расширение nuget Microsoft.PowerShell.5.1.ReferenceAssemblies на компьютерах с Powershell 5.1 и Microsoft.PowerShell.5.0.ReferenceAssemblies на компьютерах с Powershell 5.0 в моем проекте C# CmdLet, однако я не могу использовать оба вместе.

Как я могу поддерживать несколько версий Powershell в моем проекте C# CmdLet?

1 ответ

Используйте пакет https://www.nuget.org/packages/PowerShellStandard.Library для создания модулей (командлетов), которые работают в нескольких версиях и даже выпусках; т.е. они работают как в Windows PowerShell, так и в PowerShell [Core].

  • Используйте версию 3 для создания командлетов, работающих в PowerShell версии 3 и более поздних.

    • Любопытно, что последний опубликованный пакет 3.x - 3.0.0-preview-02, с 2018 года - не знаю почему.
  • Используйте версию 5.1 для создания командлетов, которые работают в PowerShell версии 5.1 и новее.

Дополнительную информацию см. В репозитории PowerShell Standard GitHub.

Заметка:

  • Пакет PowerShellStandard.Library предназначен для разработки кода, который выполняется изнутри PowerShell на данном компьютере; то есть требуется существующая установка PowerShell.

  • Напротив, следующие пакеты позволяют связать PowerShell с вашим приложением:

Другие вопросы по тегам