问题:
我正在编写一个接受参数和发送电子邮件的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)
这样做的最佳做法是什么?
谢谢你
答案 0 :(得分:3)
使用splatting:
$Params = @{}
if($ShouldUseCc) {
$Params.Add('Cc', $CcValue)
}
if($ShouldUseBcc) {
$Params.Add('Bcc', $BccValue)
}
Send-MailMessage -From $from ... @Params