我需要帮助的人。
这个命令对我不起作用,因为
系统找不到指定的文件。
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 "********/*********"}"
我该怎么办?
感谢您的帮助。
答案 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实例(原文如此)。