发送

时间:2017-12-10 21:42:34

标签: powershell email cmd smtp attachment

我需要帮助的人。

这个命令对我不起作用,因为

  

系统找不到指定的文件。

powershell -command "& { Send-MailMessage -From "janohanes155 <janohanes155@gmail.com>" -To "janohanes155 <janohanes155@gmail.com>" -Subject "Sending the Attachment" -Body "Got it" -Attachments "c:\shade\info.txt" -Priority High -dno onSuccess, onFailure -SmtpServer "smtp.gmail.com" -Credential "********/*********"}"

我该怎么办?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的问题是,双引号字符串包含 嵌入式 "字符。你忘了逃避

此外,由于潜在的 2 层为escapin g - 一个用于当前shell ,另一个用于目标< / em> shell, 可能需要额外的转义

特定的转义方法取决于您从调用命令的位置。

以下示例使用简化的命令,更简洁地演示问题;在纯PowerShell形式中,命令是:
Write-Output "jdoe <jdoe@example.com>"

奇怪的是,当PowerShell从外部传递-Command时,需要嵌入式"字符。为\ - 转义,而 PowerShell- 内部 ` - 必须使用转义

从Windows运行对话框 Win + R ):

所有需要的是\ - 为了目标PowerShell实例的好处而逃避嵌入的"字符。(不涉及当前 shell):< / p>

powershell -command "& { Write-Output \"jdoe <jdoe@example.com>\" }"

来自cmd.exe(命令提示符)

powershell -command "& { Write-Output \"jdoe ^<jdoe@example.com^>\" }"

除了\ - 转义"之外,您还必须^ - 转义< } >cmd.exe个字符由于无法识别\ - 转义"字符,因此认为是双引号字符串的 。已转义(cmd.exe仅识别"")。

< >cmd.exe作为 shell重定向运算符的无意识解释导致您遇到的错误消息。< / p>

来自PowerShell 本身:

powershell -command "& { Write-Output \`"jdoe <jdoe@example.com>\`" }"

除了\ - 为目标 PowerShell实例转义"之外,您还必须` - 转义"个字符。对于当前 PowerShell实例(原文如此)。