programing

함수의 필수 및 기본 매개 변수

mailnote 2023. 8. 24. 22:24
반응형

함수의 필수 및 기본 매개 변수

발신자 주소와 수신자 주소가 항상 동일하도록 특수한 목적(오류 메시지)을 위해 PowerShell send-email-function을 조금 작성했습니다.

  Function Send-EMail {
      Param (
          [Parameter(Mandatory=$true)]  [String]$EmailTo   = "ToAddr@gmx.at", # default
          [Parameter(Mandatory=$true)]  [String]$EmailFrom = "FromAddr@gmail.com", #default
          [Parameter(Mandatory=$true)]  [String]$Subject,
          [Parameter(Mandatory=$true)]  [String]$Body,
          [Parameter(mandatory=$false)] [String]$Attachment,
          [Parameter(mandatory=$true)]  [String]$Password
      )
          $SMTPServer = "smtp.gmail.com"
          $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
          if ($attachment -ne $null) {
              $SMTPattachment = New-Object System.Net.Mail.Attachment($attachment)
              $SMTPMessage.Attachments.Add($STMPattachment)
          }
          $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
          $SMTPClient.EnableSsl = $true
          $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($EmailFrom.Split("@")[0], $Password);
          $SMTPClient.Send($SMTPMessage)
          Remove-Variable -Name SMTPMessage
          Remove-Variable -Name SMTPClient
          Remove-Variable -Name Password
          Remove-Variable -Name Body
          Remove-Variable -Name Subject

  } #End Function Send-EMail
  ....
  $subj = "Subject"
  $body = @" Body-Text  "@
  Send-EMail -Subject $subj -Body $body -Password "myPWD" -Attachment $logFile

이제 이메일 주소를 다시 지정할 필요가 없기 때문에 ISE 디버거에서 한 줄씩 실행하면 EmailTo 주소를 묻는 작은 창이 열립니다.

Why this?

이미 주어진 주소를 묻지 않으려면 무엇을 변경해야 합니까?

Mandatory매개 변수 특성 플래그:

[Parameter(Mandatory=$true)]

실제로는 "발신자가 이 매개 변수에 인수를 제공해야 합니다."를 의미합니다.

매개 변수를 매개 변수 블록에서 제공하는 기본값으로 되돌리려면 다음을 설정합니다.Mandatory에 깃발을 내미는.$false:

[Parameter(Mandatory=$false)]
[string]$EmailTo = "to@company.domain",

이것은 약간 직관적이지 않은 것처럼 보일 수 있지만 사용자가 필요한 매개 변수를 제공하지 않은 경우를 감지할 수 있습니다.

if(-not($PSBoundParameters.ContainsKey('EmailTo')) -and $EmailTo)
{
    # User relied on default value
}

언급URL : https://stackoverflow.com/questions/35127673/mandatory-and-default-parameters-of-a-function

반응형