我有一个在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
参数传递给方法之前检查了它,它确实是一个完整的路径。这里有什么问题?
答案 0 :(得分:1)
好吧,修复了我自己的问题(至少现在)。首先,当我最初尝试不同的东西来修复它时,我将行ps.AddCommand()
更改为ps.AddScript()
并忘记在它不起作用时将其更改回来。 ps.AddCommand()
显然是调用此方案的正确方法。这(本身)并没有解决我的问题。 HERE我找到了类似问题的解决方案,所以我在我的网站上尝试了它并且有效。
总结一下,导航到注册表中的HKLM\System\CurrentControlSet\Services\FsDepends
。单击DWORD值Start
并将其从3
更改为0
。重新开始申请。显然它与特定Windows服务中混乱的时间有关。我不确定这是否是一个永久的解决方案,但我现在的所有代码似乎都已按顺序排列,所以我们会看到。