版本差异如何影响远程计算机上的 PowerShell 命令?

版本差异如何影响远程计算机上的 PowerShell 命令?

较新的 PowerShell 版本显然将附带新功能和新命令。在编写脚本或 PowerShell 演练时,这一点很重要,因为这些脚本或演练可能会在安装不同版本的系统上本地运行。

一个简单的例子是Get-FileHash。此命令是 PowerShell 4.0 的新命令,在运行早期版本的任何系统上都不可用。它尤其不适用于运行 Windows 7 SP0(或 Server 2008 R2 SP0)或更低版本的任何系统,因为这些系统根本不支持 PowerShell 4.0。

但是,除了支持给定的 PowerShell 版本这一简单问题之外,还需要进一步考虑安装的操作系统版本。例如,Test-NetConnection无论在运行任何早期操作系统的系统上安装了哪个版本的 PowerShell,目前仅适用于 Windows 8.1(或 Server 2012 R2)。

对于在本地系统上运行 PowerShell 命令的脚本或指南来说,这一切都非常简单 - 如果本地系统具有操作系统版本 A 和 PowerShell 版本 B,则可以使用(并且只能使用)在 PS B 上支持的任何 OS A 命令。但是,对于脚本寻址可能运行不同操作系统或 PowerShell 版本的远程计算机的情况,它似乎不是那么简单或清晰。

那么,不同的 PowerShell 版本如何影响针对远程计算机运行的命令?

  • 如果本地系统运行的是更高版本,那么较新的命令/功能是否可以用于远程系统?
  • 如果远程系统运行的是更高版本,当本地系统不支持较新的命令/功能时,是否有一种简单(且可编写脚本)的方法来利用它?
  • 是否存在一些一般规则,人们可以牢记这些规则以了解预期的兼容性问题,或者这是否差异很大,需要针对所使用的每个命令或功能进行单独研究/测试?

答案1

仅当 cmdlet 位于当前运行 PowerShell 的系统上时,它们才可用。我刚刚测试过这一点。

例如,如果您在运行 Windows Server 2012 R2 的服务器上,并且远程访问运行 Windows Server 2008 R2 的系统,则您将无法运行仅在 2012 R2 上可用的 cmdlet。Tab 补全将不起作用,如果您尝试运行该 cmdlet,您将收到错误(因为它不可用)。

如果你从 2008 R2 远程到 2012 R2,你将要能够使用 2012 R2 上提供的 cmdlet。Tab 补全功能也将起作用。

相关内容