在Powershell中使用电子邮件正文创建.bat文件

时间:2016-02-24 12:51:38

标签: email powershell batch-file outlook-redemption

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

主要想法:

发件人发送带有命令的邮件,例如:ipconfig /all > result.txt,并且在收件人端运行的脚本将此命令复制到.bat文件并运行.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
}

错误:

enter image description here

1 个答案:

答案 0 :(得分:5)

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

解决此问题的最简单方法是使用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