Powershell:找不到接受参数“test”的位置参数

6
我正在尝试通过命令行执行以下命令:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  Send-MailMessage -from "mail.me" -to "mail.me" -Subject "PS test !" -Body "Hi this is a power shell mail test" -SmtpServer "mail.domain.com"

但是我收到了以下错误信息:
Send-MailMessage:找不到可以接受参数“test”的位置参数。 在第1行,第17个字符 Send-MailMessage <<< -from mail.me -to mail.me -Subject PS test ! -Body Hi this is a power shell mail test -SmtpServer mail.domain.com
问题在于,当直接在Power Shell中执行命令而不带路径时,同样的命令可以正常工作。
生成此异常的可能问题是什么?

“Send-MailMessage” 不是 PowerShell 版本 2 的 cmdlet 吗? - Shaneis
我确保它是与 Power Shell 控制台指向的路径相同的路径。 - mounaim
可能是PowerShell脚本中的位置参数错误的重复问题。 - Jim G.
2个回答

7

使用-command和大括号。目前,您正在启动powershell并传递多个参数,而不是要求它执行您的代码。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  -command "& {Send-MailMessage -from "mail.me" -to "mail.me" -Subject "PS test !" -Body "Hi this is a power shell mail test" -SmtpServer "mail.domain.com"}"

你设置的某些值存在错误(需要转义的字符、无效的电子邮件等),因此我进行了替换并使其运行:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  -Command "& {Send-MailMessage -From test@test.com -To othertest@test.com -Subject "whatevs" -SmtpServer "localhost" -Body "whatevs"}"

我尝试运行以下命令 (Send-MailMessage -from mail.me -to mail.me -Subject PS test ! -Body Hi this is a power shell mail test -SmtpServer mail.domain.com ),但输出结果没有双引号的参数,并且该命令未被执行。 - mounaim
我通过在开头添加(“&”)并将双引号替换为单引号使其正常工作,这里的“&”有什么用处? - mounaim
1
@mounaim 很高兴听到它正在工作。&是调用运算符 - 请参阅此StackOverflow帖子。 接受的答案中的ss64链接也很有用 - 我建议像他们的示例一样使用脚本块,以避免在后续多个命令中出现问题。 - G42
gms0ulman'0 非常感谢,我一直在努力让它正常工作。 - mounaim

2

您需要在命令中转义双引号。否则,命令处理器将其去除,您的“test”将出现为Send-MailMessage的参数。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  Send-MailMessage -from "mail.me" -to "mail.me" -Subject \"PS test !\" -Body \"Hi this is a power shell mail test\" -SmtpServer "mail.domain.com"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接