C#中的Powershell命令不起作用

时间:2017-11-07 14:12:08

标签: c# powershell windows-10

我有一个在Windows 10上运行的C#WPF应用程序,我从中调用Powershell命令。通常,代码运行成功,一切都很好,但现在却没有。

Powershell命令运行时没有任何错误,但不执行任何操作。我没有更改任何与这些命令有关的代码。

我打电话的方法如下:

using (var ps = PowerShell.Create()) //Mounts iso image
{
       ps.AddScript("Mount-DiskImage");
       ps.AddParameter("ImagePath", IMG);
       string outp = "";
       Collection<PSObject> PSOutput = ps.Invoke();
       using (StringWriter sw = new StringWriter())
       {
           foreach (PSObject invoke in PSOutput)
               sw.WriteLine(invoke.ToString());
           outp = sw.ToString();
       }
       if (ps.Streams.Error.Count > 0)
       {
           outp += Environment.NewLine + string.Format("{0} errors: ", ps.Streams.Error.Count);
           foreach (ErrorRecord err in ps.Streams.Error)
                    outp += Environment.NewLine + err.ToString();
           MessageBox.Show(outp);
       }
 }

编辑:更改代码以在引发错误时返回错误。测试时未显示错误。

编辑2:添加了其他错误检查。这会返回错误,但我无法判断它是什么。

编辑3:更改了代码以查看错误输出,它说我没有提供ImagePath参数(我没有提供)。我在将IMG参数传递给方法之前检查了它,它确实是一个完整的路径。这里有什么问题?

1 个答案:

答案 0 :(得分:1)

好吧,修复了我自己的问题(至少现在)。首先,当我最初尝试不同的东西来修复它时,我将行ps.AddCommand()更改为ps.AddScript()并忘记在它不起作用时将其更改回来。 ps.AddCommand()显然是调用此方案的正确方法。这(本身)并没有解决我的问题。 HERE我找到了类似问题的解决方案,所以我在我的网站上尝试了它并且有效。

总结一下,导航到注册表中的HKLM\System\CurrentControlSet\Services\FsDepends。单击DWORD值Start并将其从3更改为0。重新开始申请。显然它与特定Windows服务中混乱的时间有关。我不确定这是否是一个永久的解决方案,但我现在的所有代码似乎都已按顺序排列,所以我们会看到。