有没有办法知道 Powershell 中的 cmdlet 版本以实现向后兼容性?

yan*_*taq 5 powershell powershell-2.0 powershell-3.0

假设您正在 Powershell 4.0 环境中编写脚本,并且希望确保该脚本可以在 Powershell 3.0 中运行。如何确保其向后兼容?

小智 5

这是获取“Get-ChildItem”版本的示例:

(Get-Command Get-ChildItem).Version
Run Code Online (Sandbox Code Playgroud)


Mat*_*att 4

好吧,问题的措辞对于您正在寻找的内容来说更加具体一些。听起来你是在要求require

#Requires语句将阻止脚本运行,除非满足 Windows PowerShell版本、模块、管理单元以及模块和管理单元版本先决条件。如果不满足先决条件,Windows PowerShell 将不会运行该脚本。

这样,在编写脚本时,您可以强制执行脚本的功能版本。

#Requires -Version 3.0
Run Code Online (Sandbox Code Playgroud)

因此,现在当您构建和调试脚本时,您知道它可以在至少 3.0 的系统上运行。如果重要的话,它也可以识别较小的构建。


我最近根据自己的需要遇到了这个要求,现在意识到我上面的建议不会给你带来我认为你正在寻找的确切结果。相反,您应该做的是,当您运行脚本时,调用新的 PowerShell 会话并使用启动指定版本的 Windows PowerShell ( TechNet-Version ) 的开关。

因此,当您测试脚本时,请像这样运行它:

powershell -Version 2 -File myscript.ps1
Run Code Online (Sandbox Code Playgroud)