【问题标题】:Powershell: A positional parameter cannot be found that accepts argument “test”Powershell:找不到接受参数“test”的位置参数
【发布时间】:2017-11-06 03:07:38
【问题描述】:

我正在尝试通过命令行执行以下命令

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 :  A positional parameter cannot be found that accepts arguement  « test ».
Au niveau de ligne : 1 Caractère : 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
    + CategoryInfo          : InvalidArgument: (:) [Send-MailMessage], Paramet
   erBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell
   .Commands.SendMailMessage

问题是同样的命令在 Power Shell 中直接执行时效果很好,但没有路径。
产生此异常的问题可能是什么?

【问题讨论】:

标签: powershell cmd parameters


【解决方案1】:

使用-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 测试!-Body 嗨,这是一个 power shell 邮件测试 -SmtpServer mail.domain.com)在输出中,没有参数的双引号,并且命令没有执行
  • 我通过在开头添加 ( "& ) 并用单引号替换双引号来让它工作,这里 & 有什么用处?
  • @mounaim 很高兴听到它正在工作。 &amp; 是呼叫操作员 - see this StackOverflow post。接受的答案中的ss64 link 也很有用 - 我会推荐脚本块,就像他们的示例一样,以避免出现多个命令的问题。
  • gms0ulman'0 非常感谢,我一直在努力解决这个问题
【解决方案2】:

您需要在命令中转义双引号。否则命令处理器将其剥离,您的“测试”将作为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"

【讨论】:

    猜你喜欢
    • 2015-05-21
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2019-05-07
    • 2016-07-06
    • 2014-09-30
    相关资源
    最近更新 更多