【问题标题】:Send-MailMessage - from parameter error?Send-MailMessage - 来自参数错误?
【发布时间】:2017-08-27 01:41:24
【问题描述】:

我正在尝试使用带有以下命令的 PowerShell 发送邮件:

powershell -command "& {Send-MailMessage -To "xxxxx@xx.com" -From "xxxx@domain.com" -SMTPServer xxx.xx.com -Subject "report" -Body "service is running"}"

但我收到此错误:

Send-MailMessage:找不到接受参数的位置参数 'xxx@xx.com'。 在行:1 字符:20 + & {Send-MailMessage

【问题讨论】:

  • 您可以尝试在命令周围使用 APOSTROPHE 字符而不是 QUOTE 字符。另外,我不确定您是否需要“&”。

标签: powershell


【解决方案1】:

正如其他人已经提到的那样,您的引用被破坏了。您试图将双引号嵌套在双引号字符串中而不转义它们。未转义的嵌套双引号会过早终止您的字符串,从而导致您观察到的错误。

解决此问题的最简单方法是将嵌套的双引号替换为单引号,因为您似乎并没有在该命令中使用变量:

powershell.exe -Command "& {Send-MailMessage -To 'xxxxx@xx.com' -From ..."

如果您想继续使用嵌套的双引号(例如,因为您的脚本块中有变量,不会在单引号字符串中展开),您需要转义它们。如果您从 PowerShell 外部(例如从 CMD)运行命令,则可以使用反斜杠:

powershell.exe -Command "& {Send-MailMessage -To \"xxxxx@xx.com\" -From ..."

如果您在 PowerShell 中运行命令,则需要两次转义嵌套的双引号(一次用于 PowerShell,当它解析命令行时,一次用于实际命令调用):

powershell.exe -Command "& {Send-MailMessage -To \`"xxxxx@xx.com\`" -From ..."

但是,如果您实际上是从 PowerShell 运行它,则首先不需要 powershell.exe -Command。直接调用Send-MailMessage即可:

Send-MailMessage -To "xxxxx@xx.com" -From ...

【讨论】:

  • 这也是对命令进行编码的好例子,尤其是对于发送邮件这样简单的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
相关资源
最近更新 更多