【发布时间】:2015-05-04 16:56:17
【问题描述】:
我正在寻找一种历史课。我是 PowerShell 的后来者。我在第 4 版上学到了,并且我正在考虑在版本兼容性很重要的地方使用越来越多的命令行开关。当我运行powershell -version 3 时,我的大部分单元测试都通过了。另一方面,当我运行powershell -version 2 时,会有一片红色的海洋。我不想盲目地修改我的代码库以使其对 PowerShell 的 v4 之前的版本友好,而是想了解这将意味着什么。
someposts 说明了版本之间的一些差异,但我没有发现任何规范的东西,也没有发现任何采用回顾性视角来实现代码库向后兼容的东西。
这是我的具体问题:
早期版本的 PowerShell 中缺少哪些主要的东西是为更高版本编写的代码可能依赖的?
PowerShell 本身 的版本是否向后兼容?也就是说,如果一个编写良好的脚本在版本 2 上正确运行,我是否可以期望它在版本 3、4 和 5 上运行时的行为方式相同?
【问题讨论】:
-
一个简单的问题要涵盖的内容太多了。可以在here 找到基本 比较,因为它向您展示了多年来添加的内容。此外,我不知道任何不向前兼容的 powershell。我们是否在 v6 出现时编辑这个问题?
-
@Matt 在 v2 中肯定有合法的脚本在 v3+ 中的行为不同,例如:
foreach ($a in $null) { write-host "a:$a" }将在 v2 中输出一行,但在 v3+ 中不输出任何内容。简而言之,在版本 2 中,null 被视为包含 null 的单个项目的集合,而在版本 3 及更高版本中,它被视为空集合。
标签: powershell powershell-2.0 powershell-3.0 powershell-4.0 powershell-5.0