Код Powershell, выполняемый через мое приложение C #, прекрасно работает в Windows 10, но даже не работает в Windows 7. Он также не выходит за пределы Process.WaitForExit ()
Я пытался использовать Powershell (System.Management.Automation) внутри кода.
Я также установил 'set-executepolicy 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 для преобразования файла.