限制PowerShell命令的版本

3

我正在编写一个Powershell脚本(在Win10机器上),需要向后兼容到Win7机器-它们附带了Powershell版本2.0。 我想在ISE中仅限于使用2.0版本可用的命令,或者在编写脚本时如果我越出了该版本范围,则抛出错误-有没有简单的方法来实现这一点?


我不知道有没有一种方法可以这样配置ISE,但是您至少可以通过运行 powershell -version 2 对脚本进行版本为2的命令行测试。 - Poorkenny
3个回答

3

我不确定ISE中是否有这种方法(我认为没有),但您可以单独以2.0模式启动提示符(控制台宿主):

powershell.exe -Version 2.0

您可以将此与ISE结合使用,通过在ISE中编辑和保存脚本,然后在控制台主机中执行它。虽然不是理想的,但这也算是一种比较好的解决方法。


那很好!我将使用控制台主机在使用ISE之前验证我想要使用的命令是否存在。 - Scott Baker

2
Set-StrictMode -Version 2.0

MSDN链接

-版本2.0

  • 防止使用未初始化的变量(类似于VBScript中的Option Explicit)
  • 不能调用不存在的对象属性
  • 禁止像方法一样调用函数,例如Do-Something(1 2)
  • 不允许创建没有名称的变量

请注意,您可以使用它来限制某些特定方法的功能。

关于命令行。这里没有任何解决方案。

我建议您使用Get-Help检查每个命令行。在那里可以在描述中获得版本。

例如:

Get-Help -Name "Invoke-RestMethod"

回答如下: ... 此 cmdlet 是在 Windows PowerShell 3.0 中引入的。 ...


-1

您还可以在脚本顶部包含 requires 指令。

#requires -version 5

使用脚本所需的正确版本号,如2、3、4等。这将确保它在 ISE 中正常工作。


1
这并不是帖子所要求的。它不会将可用命令限制为某个(最大)版本,它只是不允许脚本执行,除非有特定的_最小_版本可用。 - briantist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接