如何为同一台机器自动化 PowerShell 或 PowerShell Core

Mik*_*ver 4 powershell powershell-core

随着 PowerShell Core 的发布,应用程序在使用托管自动化库 (system.management.automation) 时如何选择调用哪个版本的 Powershell(Powershell 5.x 或 PowerShell Core)?关于应该创建的运行空间的一些事情?或者也许是连接信息?

mkl*_*nt0 5

以下是与PowerShell SDK 相关的 NuGet 包的概述:改编自此处

  • Microsoft.PowerShell.5.ReferenceAssemblies- 用于构建基于.NET Framework(仅限 Windows)的Windows PowerShell应用程序。

  • Microsoft.PowerShell.SDK- 用于构建PowerShell Core (v6+) 应用程序,基于.NET Core / 5+(跨平台)。

    • 要确定给定的包版本必须至少与哪个特定的 .NET (Core) 运行时结合,请在链接页面上选择感兴趣的包版本,展开该Dependencies部分,然后查阅第一个条目;例如,对于包版本7.2.0,所需的最低 .NET (Core) 运行时是net6.0.
  • PowerShellStandard.Library-构建模块和主机 的兼容产品Windows PowerShell和PowerShell核心(跨平台) -但

    • “PowerShell Standard 是一个参考程序集,旨在帮助开发人员创建将在 PowerShell 上运行的模块和 PowerShell 主机。参考程序集不包含实际实现,而是允许您仅使用存在于不同 PowerShell 版本中的 API。这意味着您仍然需要在 PowerShell 运行时中运行。

    • 要创建独立应用程序,请使用前两个包之一。

  • System.Management.Automation - 不建议直接使用。


至于通过远程处理针对特定版本/版本:

  • 看到这个问题和答案

  • 请注意,它从使用 PowerShell cmdlet的角度而不是 SDK的角度涵盖了远程处理,尽管您始终也可以通过 SDK 调用 cmdlet。


正如Lee Daily在评论中指出的那样,特定于版本的可执行文件名是:

  • powershell.exe- Windows PowerShell

  • pwsh.exe(Windows) / pwsh(类 Unix 平台) - PowerShell Core