有没有办法在Azure Runbook中使用[switch]参数

时间:2017-10-18 10:59:38

标签: powershell azure

我有一个小脚本,我正在将Azure Runbook迁移到Azure自动化帐户。 最初,脚本使用了一些开关参数,例如-WhatIf。

#Requires -Version 3.0 
[cmdletbinding()]
param(
 #//Other parameters
[switch]$WhatIf
 #//Other parameters
)
if ($WhatIf.IsPresent) {
 #////Do something
}

但是当我尝试在测试窗格中测试它时,我无法将任何值传递给它。

enter image description here

我尝试了1,0,$ True,$ true,True,False,但似乎没有任何效果。我知道我可以改变参数的类型,但我想知道可能有更好的方法。有吗?

2 个答案:

答案 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
}