通过我的C#应用程序执行的Powershell代码在Windows 10上可以完美执行,但甚至无法在Windows 7上运行。它也没有超越Process.WaitForExit()
我尝试在代码内部使用Powershell(System.Management.Automation)本身。 我还设置了“ set-executionpolicy remotesigned”,它使用Powershell脚本(.ps1)运行,但是在C#代码中使用它时,如下所示。
Process p = new Process();
p.StartInfo.FileName = "powershell";
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.Start();
using (StreamWriter sw = p.StandardInput)
{
if (sw.BaseStream.CanWrite)
{
string pdfName = fileName.Substring(0, fileName.Length - new FileInfo(fileName).Extension.Length) + ".pdf";
sw.WriteLine("$Exl = New-Object -ComObject Excel.Application");
sw.WriteLine("$Doc = $Exl.Workbooks.Open(\"" + fileName + "\")");
sw.WriteLine("$Doc.ExportAsFixedFormat([Microsoft.Office.Interop.Excel.XlFixedFormatType]::xlTypePDF, \"" + pdfName +"\")");
sw.WriteLine("$Doc.Close($False)");
sw.WriteLine("[gc]::Collect()");
sw.WriteLine("[gc]::WaitForPendingFinalizers()");
sw.WriteLine("$Exl.Quit()");
sw.WriteLine("[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Exl)");
sw.WriteLine("Remove-Variable Exl");
}
}
p.WaitForExit();
在Windows 10上,脚本成功将Excel文件转换为pdf,但是在Windows 7上-脚本甚至没有打开Excel来转换文件。