【问题标题】:Powershell - passing a switch to a scriptmethodPowershell - 将开关传递给脚本方法
【发布时间】:2013-06-27 16:20:06
【问题描述】:

因此您可以将开关传递给函数:

函数 func ($parm1,$parm2,[switch]$switch1) {write-host $switch1}

func -switch1

是的

如何将开关传递给脚本方法?

$obj = 新对象对象

Add-Member -in $obj ScriptMethod 'method' { param($parm1,$parm2,[switch]$switch1) 写主机 $switch1 }

$obj.method(-switch1) # 不起作用

【问题讨论】:

  • 函数仿照powershell cmdlet(嗯,有点),脚本方法仿照.net方法。后者不要使用开关参数。

标签: powershell switch-statement


【解决方案1】:

switch 参数持有一个布尔值,如果方法的目标参数接受一个布尔值,则传递 switch 变量:

$obj.method($switch1)

【讨论】:

  • 感谢 Shay,但这并不能完全解决问题 - 开关(至少在函数中)的好处是它们不必在调用中全部指定或按顺序出现。认为您可能有几个位置参数(非开关),然后是几个用作可选值的开关参数。除非您指定一个,否则所有开关都默认为 False。如果不需要,您可以跳过常规参数,也许它们也是可选的,如果需要,只需指定一个或多个开关。
  • 在原始示例中,param 语句为:param($parm1,$parm2,[switch]$switch1)。 func -switch 不关心为 parm1 和 parm2 指定值,只想说 switch1 是 True。 $obj.method($switch) 会将该值传递给 parm1。我必须确保传递了所有参数并设置了值 - $obj.method($parm1,$parm2,$switch1)。希望这能阐明切换到脚本方法的愿望。
猜你喜欢
  • 2016-10-26
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
相关资源
最近更新 更多