在 Powershell 中创建带有电子邮件正文的 .bat 文件

Creating .bat file with e-mail body in Powershell

我目前正在编写一个脚本,该脚本将读取来自某个发件人的邮件,该发件人将向 运行 发送脚本的一些命令。

主要思想:

发件人发送带有命令的邮件,例如:ipconfig /all > result.txt 并且收件人端的脚本 运行ning 将此命令复制到 .bat 文件并 运行ning . bat 文件来处理命令。

代码:

$junk = $routlook.GetDefaultFolder(23)
$MI = $junk.items

foreach($m in $MI)
{
    if($m.SenderEmailAddress -eq '<sender-address>')
    {
        Echo "@ECHO OFF" > com.bat
        Echo $MI.item(1).Body > com.bat
        .\com.bat
    }
    break
}

错误:

您的问题是您没有指定输出文件的编码。

解决此问题的最简单方法是使用 Out-File cmdlet 并自行指定编码。请注意,对 Out-File 的第二次和后续调用必须指定 -Append 参数,否则您将覆盖您的文件。

$> "@ECHO OFF" | Out-File -FilePath cmd.bat -Encoding ascii
$> "Echo hi"   | Out-File -FilePath cmd.bat -Encoding ascii -Append
$> .\cmd.bat