【问题标题】:What are the major things missing from earlier versions of Powershell compared with the later versions?与较新版本相比,早期版本的 Powershell 缺少哪些主要内容?
【发布时间】:2015-05-04 16:56:17
【问题描述】:

我正在寻找一种历史课。我是 PowerShell 的后来者。我在第 4 版上学到了,并且我正在考虑在版本兼容性很重要的地方使用越来越多的命令行开关。当我运行powershell -version 3 时,我的大部分单元测试都通过了。另一方面,当我运行powershell -version 2 时,会有一片红色的海洋。我不想盲目地修改我的代码库以使其对 PowerShell 的 v4 之前的版本友好,而是想了解这将意味着什么。

someposts 说明了版本之间的一些差异,但我没有发现任何规范的东西,也没有发现任何采用回顾性视角来实现代码库向后兼容的东西。

这是我的具体问题:

  1. 早期版本的 PowerShell 中缺少哪些主要的东西是为更高版本编写的代码可能依赖的?

  2. 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


【解决方案1】:
  1. 这个问题太宽泛,无法得到一个好的答案。我建议阅读What's New in Windows PowerShell 以了解更改的重点。
  2. PowerShell 向后兼容为早期版本的 PowerShell 编写的脚本。我不会说 100%,但我不记得听说过任何问题。较新的版本扩展和简化了现有的 cmdlet,并引入了许多改进,但 AFAIK 没有任何内容被删除或破坏。即使管理单元在 5.0 中仍受支持,即使它们在 PowerShell 2.0 中已被模块取代。

【讨论】:

    猜你喜欢
    • 2011-03-25
    • 1970-01-01
    • 2021-12-02
    • 2010-11-02
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多