C # Powershell код не выполняется в Windows 7 - PullRequest
0 голосов
/ 25 марта 2019

Код 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 для преобразования файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...