【发布时间】:2021-06-13 13:46:37
【问题描述】:
我正在使用脚本在我的机器上发送电子邮件,该脚本是一个 sh 脚本,我需要通过另一个批处理脚本自动执行该脚本,问题是当我直接复制 Powershell 命令上的代码时工作正常,电子邮件将被发送,但是当我尝试使用脚本运行它时,它总是失败: 这是我的电子邮件代码:
$EmailFrom = “whatever@gmail.com”
'$EmailTo = “whatever@gmail.com”
'$Subject = “helooo2o”
$Body = “test test test”
$SMTPServer = “smtp.gmail.com”
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“whatever@gmail.com”, “pwd”);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
当我将它直接放在 CMD 上时它工作正常,然后 Powershell 它工作但当我使用这个脚本时 它不会工作:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -command 'C:\Users\user1\Desktop\test.sh'
当我将 PowerShell 与以下命令一起使用时:Bash test.sh 它显示了这个:
bash /test.sh: cannot execute binary file
你们能帮我吗?我需要用批处理脚本自动运行这个脚本,谢谢。
【问题讨论】:
-
您上面的内容与 BASH 或 SH 无关。您包含这两个标签还有其他原因吗? powershell 和 Linux bash/sh 的语法完全不同。 Bash 和 sh 最多以 UTF-8 编码处理 ASCII 文本。我怀疑你的文件是 UTF-16 格式的。
-
你好,谢谢你的回复,但我刚刚用我的记事本++检查了一下,上面写着UTF-8
-
文件的扩展名应该是
.ps1。这与 bash 无关。 -
@aze 您上面给出的代码不是shell脚本代码,无论文件格式如何。请尝试研究基础知识。
-
您在问题中显示的代码是 PowerShell 代码而不是 bash。 PowerShell 脚本的扩展名是
.ps1。此外,您还有 2 个变量定义错误'$EmailTo和'$Subject。删除这些变量开头的'。
标签: powershell