winforms 使用PowerShell RunSpace在Winform C#中运行两个PowerShell脚本,我得到了相同的结果

o2gm4chl  于 2022-12-27  发布在  Shell
关注(0)|答案(1)|浏览(240)

使用Visual Studio 2017 WIN-Form C#
当我使用PowerShell RunSpace在Winform C#中运行以下PowerShell脚本时,我得到了相同的结果。

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName | Format-Table –AutoSize > C:\Temp\InstalledSoftwareList1.txt

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName | Format-Table –AutoSize > C:\Temp\InstalledSoftwareList2.txt

但是,如果我在PowerShell伊势中运行这些相同的脚本,我会得到两个不同的结果,这正是我所希望的。
我不明白为什么在WinForms中运行它们会得到相同的结果。
这是我在Winform中使用的。

private string RunScript(string script)
    {
        Runspace runspace = RunspaceFactory.CreateRunspace();
        runspace.Open();
        Pipeline pipeline = runspace.CreatePipeline();
        pipeline.Commands.AddScript(script);
        pipeline.Commands.Add("Out-String");
        Collection<PSObject> results = pipeline.Invoke();
        runspace.Close();
        StringBuilder stringBuilder = new StringBuilder();
        foreach (PSObject pSObject in results)
            stringBuilder.AppendLine(pSObject.ToString());
        return stringBuilder.ToString();
    }

像这样运行代码。

RunScript(@"Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName | Format-Table –AutoSize > C:\Temp\InstalledSoftwareList1.txt");

RunScript(@"Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName | Format-Table –AutoSize > C:\Temp\InstalledSoftwareList2.txt");

有什么建议吗?
此致,

ymdaylpp

ymdaylpp1#

正如Mathias R. Jessen建议的那样,我编译了x64的C#应用程序,现在脚本返回了两个不同的结果。

相关问题