如何处理powershell cmdlet中的可选参数

时间:2016-07-03 14:30:57

标签: powershell parameters dynamic-programming optional-parameters

问题:

我正在编写一个接受参数和发送电子邮件的cmdlet。 " CC"是参数之一;并且是非强制性的。  今天代码显示两行调用Send-MailMessage(如下段),但我相信有更好的方法来编写它:

if( $cc -eq $null){  
    Send-MailMessage -From $from ...    ## call without -Cc  
} else {  
    Send-MailMessage -From $from ... -Cc $cc...     ## call WITH -Cc  
}  

我想避免分支并将该行写两次。

或甚至比#34;两次"更糟糕,为每个可选参数编​​写所有组合。

(当然,cmdlet发送电子邮件的事实在这里并不重要。问题在于需要避免可选参数的任何cmdlet)

这样做的最佳做法是什么?

谢谢你

1 个答案:

答案 0 :(得分:3)

使用splatting

$Params = @{}
if($ShouldUseCc) {
    $Params.Add('Cc', $CcValue)
}
if($ShouldUseBcc) {
    $Params.Add('Bcc', $BccValue)
}
Send-MailMessage -From $from ... @Params