2017-10-18 99 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 ...

相關問題