Как поддерживать различные версии 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 года - не знаю почему.
- Любопытно, что последний опубликованный пакет 3.x -
Используйте версию 5.1 для создания командлетов, которые работают в PowerShell версии 5.1 и новее.
Дополнительную информацию см. В репозитории PowerShell Standard GitHub.
Заметка:
Пакет PowerShellStandard.Library предназначен для разработки кода, который выполняется изнутри PowerShell на данном компьютере; то есть требуется существующая установка PowerShell.
Напротив, следующие пакеты позволяют связать PowerShell с вашим приложением:
https://www.nuget.org/packages/Microsoft.PowerShell.SDK/ - для создания приложений PowerShell Core на базе.NET Core (кроссплатформенный).
https://www.nuget.org/packages/Microsoft.PowerShell.5.ReferenceAssemblies/ - для создания приложений Windows PowerShell на основе.NET Framework (только для Windows)