【问题标题】:Pass Subject and Body parameter to a powershell Email script using batch file使用批处理文件将主题和正文参数传递给 powershell 电子邮件脚本
【发布时间】:2018-08-23 14:59:32
【问题描述】:

我有一个 powershell 脚本,

[System.Net.ServicePointManager]::SecurityProtocol = 'TLS12'
$Mail_to="Jill.maclaurin@ca.ibm.com"
$Mail_from="shuddha.roy@gmail.com"
$Subject = "Test"
$Body = "Test Body"
$SMTPServer = "smtp.sendgrid.com"

Send-MailMessage -SmtpServer $SMTPServer -Port 587 -UseSsl -From $Mail_from -To $Mail_to -Subject $Subject -BodyAsHtml $body -Encoding ([System.Text.Encoding]::UTF8)

现在我希望从批处理文件中获取$subject$Body 值并使用该批处理文件运行powershell 脚本,该怎么做?

【问题讨论】:

  • 您需要在脚本中添加一些参数(例如-Subject-Body),然后像这样调用它:MyScript.ps1 -Subject "some text" -Body "more text"。更多信息在这里:about_Functions
  • 你是什么意思,“从批处理文件中获取主题和正文”?目前尚不清楚您要完成什么。

标签: powershell


【解决方案1】:

在脚本的开头添加一个Param 部分,您可以为所需参数使用默认值,保存文件。

Param(
$Subject = "Test",
$Body = "Test Body"
)

[System.Net.ServicePointManager]::SecurityProtocol = 'TLS12'
$Mail_to="Jill.maclaurin@ca.ibm.com"
$Mail_from="shuddha.roy@gmail.com"
$SMTPServer = "smtp.sendgrid.com"

Send-MailMessage -SmtpServer $SMTPServer -Port 587 -UseSsl -From $Mail_from -To $Mail_to -Subject $Subject -BodyAsHtml $body -Encoding ([System.Text.Encoding]::UTF8)

使用所需参数从批处理文件中调用 PS1 文件,例如:

powershell script.ps1 MySubject MyBody

【讨论】:

  • 收到以下错误 "S:\prod\mhedqa\RWScripts>powershell S:\prod\mhedqa\RWScripts\EmailUpdate.ps1 "TEST1" "TEST1 Body" Send-MailMessage : 无法验证参数参数“主题”。参数为空或空。提供一个不为空或空的参数,然后重试该命令。在 S:\prod\mhedqa\RWScripts\EmailUpdate.ps1:17 char:99 + .. . -UseSsl -From $Mail_from -To $Mail_to -Subject $EmailSubject -BodyAs ... + ~~~~~~~~~~~~~ "
猜你喜欢
  • 1970-01-01
  • 2023-01-23
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2013-02-16
相关资源
最近更新 更多