我目前正在编写一个脚本,该脚本将读取来自某个发件人的邮件,该邮件将发送一些命令让脚本运行。
发件人发送带有命令的邮件,例如: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
}
答案 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