我为特定目的(错误消息)编写了一个小型PowerShell发送电子邮件函数,以便发件人和收件人地址始终相同!
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
和$EmailFrom
的[Parameter(Mandatory=$true)]
改为[Parameter(Mandatory=$false)]
- 如果始终需要用户输入参数,则不能默认任何值。 - Mathias R. Jessen