Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#控制台和PS或CMD之间的脚本输出不同_C#_Powershell_Process - Fatal编程技术网

C#控制台和PS或CMD之间的脚本输出不同

C#控制台和PS或CMD之间的脚本输出不同,c#,powershell,process,C#,Powershell,Process,我正在尝试获取已安装应用程序的列表,我有几个脚本可以在powershell中或从命令窗口执行此操作 但是,当我尝试运行powerscript命令或运行进程时,会得到不同的数据 CMD和PowerScript方法为我提供了360个应用程序,但如果我从c#运行,我将获得215个,并且它将所有内容输出两次 简单电源脚本方法 Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |

我正在尝试获取已安装应用程序的列表,我有几个脚本可以在powershell中或从命令窗口执行此操作

但是,当我尝试运行powerscript命令或运行进程时,会得到不同的数据

CMD和PowerScript方法为我提供了360个应用程序,但如果我从c#运行,我将获得215个,并且它将所有内容输出两次

简单电源脚本方法

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion
运行进程的调用

        process = new Process();
        process.StartInfo.FileName = "powershell.exe";
        process.StartInfo.Arguments = @"-executionpolicy unrestricted -File D:\PS-Scripts\InstalledPrograms.ps1";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.CreateNoWindow = true;
        process.StartInfo.RedirectStandardOutput = true;
        process.StartInfo.Verb = "runas";
        process.OutputDataReceived += (s, e) => Console.WriteLine(e.Data);
        process.Start();
        process.BeginOutputReadLine();
如果我遗漏了什么,为什么进程调用会返回不同的数据,并且还会两次输出所有内容


谢谢

托管应用程序是为32位还是64位编译的?任何cpu,更喜欢32位OK,因此我们尝试将其作为64位,它提供与工作方法相同的输出。但是,我需要能够以32位运行它,因为它在windows和linux上都使用,