2022年8月19日金曜日

◆引数の数が可変の場合

変数で受け取った値を引数に使ってコマンドを呼び出す場合などに、省略された場合を考慮しないといけない。

  Send-MailMessage    -To $to                                       `

  -Cc $cc                                       `

  -From $from                  `

  -Subject $subject                                        `

  -SmtpServer $mailServer                                 `

  -Body $body                                 `

  -Attachments $attachment                    `

  -Encoding  ([System.Text.Encoding]::Default)     

こんなケースで$attachmentに値が入ってこないとエラーになる。

だからと言って引数の組み合わせの分だけコマンドを用意するのも・・・。

なんか簡単に解決できる方法がありそうにも思うが、見つからなかったのでとりあえず以下の様にしてみた。

  $param = @{

"To" = $to

"Cc" = $cc

"From" = $from

"Subject" = $subject

"SmtpServer" = $mailServer

"Body" = $body

"Attachments" = $attachment

"Encoding" = [System.Text.Encoding]::Default

  }

if($attachment -eq ""){$param.Remove("Attachments")}

Send-MailMessage @param

0 件のコメント:

コメントを投稿