-1

Frage:So behandeln Sie optionale Parameter im Powershell-Cmdlet

Ich schreibe ein Cmdlet, das Parameter akzeptiert und E-Mails sendet. "Cc" ist einer der Parameter; und ist nicht obligatorisch. Heute ist der Code zeigt zwei Linien Verschicken Mailmessage Aufruf (wie den folgenden Absatz), aber ich bin sicher, dass es einen besseren Weg, es zu schreiben:

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

Ich mag würde Verzweigung und Schreiben der Linie vermeiden zweimal.

Oder noch schlimmer als "zweimal", schreiben Sie alle Kombinationen für jeden optionalen Parameter.

(Natürlich ist die Tatsache, dass das Cmdlet E-Mail sendet, ist nicht wichtig. Das Problem wird für Cmdlets stehen, die optionalen Parameter vermeiden muss)

Was ist der Best-Practice-Weg, dies zu tun?

DANKE

Antwort

3

Verwendung splatting:

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