带有正文的 Powershell 发送邮件消息在批处理脚本中不起作用
Powershell send-mailmessage with body text not working in batch script
需要帮助将 PowerShell 命令批量转换为 运行。我可以得到以下 运行 罚款 .ps1:
$filecontent = Get-Content -path C:\temp\status.txt | Out-string
Send-MailMessage -to "tester@test.com" -from "ServerAdmin@test.com" -subject "STATUS: PASS" -body "$filecontent" -smtpServer mail2.co.test.ca.us
当我把它放入一个批次时:
PowerShell -command "$filecontent = Get-Content -path C:\temp\status.txt | Out-String" ^
Powershell -command Send-MailMessage ^
-to \"tester@test.com\" ^
-from \"ServerAdmin@test.com\" ^
-subject \"STATUS: PASS \" ^
-body \"$filecontent\" ^
-smtpServer mail2.co.test.ca.us
我收到这个错误:
Out-String : A positional parameter cannot be found that accepts argument 'Send-MailMessage'.
At line:1 char:55
+ ... tatus.txt | Out-String Send-MailMessage -to "tester@test.com" -from " ...
+ CategoryInfo : InvalidArgument: (:) [Out-String], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.OutStringCommand
批量执行此操作的唯一方法是将原始 PowerShell 语法放入 .ps1 并从批处理中调用它吗?发送邮件部分工作正常。尝试了不带 " 和 -Raw 的 $filecontent 行,而不是管道和 Out-string。
您应该尝试将其放在一个命令中:
PowerShell -command "$filecontent = Get-Content -path d:\temp\status.txt | Out-String; Send-MailMessage -to \"tester@test.com\" -from \"ServerAdmin@test.com\" -subject \"STATUS: PASS \" -body \"$filecontent\" -smtpServer mail2.co.test.ca.us"
因为在第二个命令中$filecontent
不再存在。
需要帮助将 PowerShell 命令批量转换为 运行。我可以得到以下 运行 罚款 .ps1:
$filecontent = Get-Content -path C:\temp\status.txt | Out-string
Send-MailMessage -to "tester@test.com" -from "ServerAdmin@test.com" -subject "STATUS: PASS" -body "$filecontent" -smtpServer mail2.co.test.ca.us
当我把它放入一个批次时:
PowerShell -command "$filecontent = Get-Content -path C:\temp\status.txt | Out-String" ^
Powershell -command Send-MailMessage ^
-to \"tester@test.com\" ^
-from \"ServerAdmin@test.com\" ^
-subject \"STATUS: PASS \" ^
-body \"$filecontent\" ^
-smtpServer mail2.co.test.ca.us
我收到这个错误:
Out-String : A positional parameter cannot be found that accepts argument 'Send-MailMessage'. At line:1 char:55 + ... tatus.txt | Out-String Send-MailMessage -to "tester@test.com" -from " ... + CategoryInfo : InvalidArgument: (:) [Out-String], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.OutStringCommand
批量执行此操作的唯一方法是将原始 PowerShell 语法放入 .ps1 并从批处理中调用它吗?发送邮件部分工作正常。尝试了不带 " 和 -Raw 的 $filecontent 行,而不是管道和 Out-string。
您应该尝试将其放在一个命令中:
PowerShell -command "$filecontent = Get-Content -path d:\temp\status.txt | Out-String; Send-MailMessage -to \"tester@test.com\" -from \"ServerAdmin@test.com\" -subject \"STATUS: PASS \" -body \"$filecontent\" -smtpServer mail2.co.test.ca.us"
因为在第二个命令中$filecontent
不再存在。