我有一个小脚本,我正在将Azure Runbook迁移到Azure自动化帐户。 最初,脚本使用了一些开关参数,例如-WhatIf。
#Requires -Version 3.0
[cmdletbinding()]
param(
#//Other parameters
[switch]$WhatIf
#//Other parameters
)
if ($WhatIf.IsPresent) {
#////Do something
}
但是当我尝试在测试窗格中测试它时,我无法将任何值传递给它。
我尝试了1,0,$ True,$ true,True,False,但似乎没有任何效果。我知道我可以改变参数的类型,但我想知道可能有更好的方法。有吗?
答案 0 :(得分:1)
只需指定值 true 或 false ,不要使用任何单/双引号或任何其他装饰。它将在AA Runbook中正常工作。在网上找不到相同的指导后,我自己发现了它。
然而,就像@AndyHerb提到的那样,最佳做法是在AA Runbook中使用bool类型而不是switch,因为它使事情变得更容易。
... HTH
答案 1 :(得分:0)
虽然您可以在Azure自动化Runbook中使用切换参数,但最佳做法建议是使用[bool]。您可以将其默认为false,甚至可以检查它是否已被传入(如果您因任何原因需要/需要)。这将使您的函数看起来如下:
#Requires -Version 3.0
[CmdletBinding()]
param (
[Parameter (Mandatory = $false)]
[bool]$WhatIf
)
# Check if user supplied $WhatIf parameter
if ($PSBoundParameters.ContainsKey('WhatIf')) {
# User specified -WhatIf
} else {
# User did not specify -WhatIf
}
# Simple parameter check - can't differentiate between $false supplied by user and parameter not supplied
if ($WhatIf) {
# User specified -WhatIf
} else {
# User did not specify -WhatIf
}