我正在编写一个脚本,通过PowerShell向人们发送电子邮件。它在某些计算机上发送良好,但在其他计算机上它根本不发送我知道两台计算机配置不完全相同。
我无法理解为什么。
我尝试添加2>>命令末尾的c:\ error.txt,它没有记录任何内容。
我的代码(出于保密原因,我更改了smtp和电子邮件):
File.Delete(@"C:\Temp\Email2Send.ps1");
var strVar_EMAIL_BOX = "myemail@email.com";
TextWriter tw = new StreamWriter(@"C:\Temp\Email2Send.ps1");
tw.WriteLine("$OutputEncoding = [Console]::OutputEncoding");
tw.WriteLine("$smtp = \"forwarder.mail.xxxxxx.com\"");
tw.WriteLine("$to = \"" + To + "\"");
tw.WriteLine("$from = \"" + strVar_EMAIL_BOX + "\"");
tw.WriteLine("$enc = [System.Text.Encoding]::UTF8");
tw.WriteLine("$subject = \"Suivi\"");
tw.WriteLine("$body = \"" + Body + "\"");
tw.WriteLine(@"send-MailMessage -SmtpServer $smtp -To $to -From $from -Subject $subject -Body $body -BodyAsHtml -Encoding $enc 2>> c:\errors.txt");
tw.Close();
}
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = @"/C powershell -ExecutionPolicy Bypass -WindowStyle Hidden -command c:\Temp\Email2Send.ps1";
process.StartInfo = startInfo;
process.Start();
编辑:没关系我在发帖后2秒找到了解决方案。由于某种原因,在Windows路径中的某些计算机上没有正确链接PowerShell。将powershell更改为:%SYSTEMROOT%\ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe
答案 0 :(得分:0)
发布后2秒我找到了解决方案。由于某种原因,在Windows路径中的某些计算机上没有正确链接PowerShell。将powershell更改为:%SYSTEMROOT%\ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe