2017-10-18 59 views
1

我有一个小的脚本,我正在以Azure Runbook的形式迁移到Azure自动化帐户。 最初,该脚本使用了一些开关参数,例如-WhatIf。有没有办法如何在Azure Runbook中使用[switch]参数

#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,则真,假,但似乎没有工作。我知道我可以改变参数的类型,但我想知道可能有更好的方法。在那儿?

回答

0

虽然您可以在Azure自动化Runbook中使用Switch参数,但最佳实践建议是使用[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 
} 
1

只要指定值没有任何单/双引号或任何其他装饰。它在AA Runbook中可以正常工作。在Web上找不到关于相同的指导之后,很难发现它。

但是,像@AndyHerb提到的,最好的做法是在AA Runbook中使用布尔类型而不是开关,因为它使事情变得更容易。

HTH ...

相关问题