C#won';行不通

C#won';行不通,c#,powershell,windows-10,C#,Powershell,Windows 10,我有一个在Windows10上运行的C#WPF应用程序,我从中调用Powershell命令。通常,代码运行成功,一切正常,但现在不行 Powershell命令运行时没有任何错误,但不执行任何操作。我没有更改与这些命令相关的任何代码 我调用的方法如下: using (var ps = PowerShell.Create()) //Mounts iso image { ps.AddScript("Mount-DiskImage"); ps.AddParameter("Im

我有一个在Windows10上运行的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);
       }
 }
使用(var ps=PowerShell.Create())//装载iso映像
{
ps.AddScript(“装入磁盘映像”);
ps.AddParameter(“ImagePath”,IMG);
字符串outp=“”;
集合PSOutput=ps.Invoke();
使用(StringWriter sw=new StringWriter())
{
foreach(PSOutput中的PSObject调用)
sw.WriteLine(invoke.ToString());
outp=sw.ToString();
}
如果(ps.Streams.Error.Count>0)
{
outp+=Environment.NewLine+string.Format(“{0}错误:”,ps.Streams.Error.Count);
foreach(在ps.Streams.Error中记录错误)
outp+=Environment.NewLine+err.ToString();
MessageBox.Show(输出);
}
}
编辑:更改代码以在引发错误时返回错误。测试时未显示任何错误

编辑2:添加了额外的错误检查。这将返回一个错误,但我无法判断它是什么


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

好吧,修复了我自己的问题(至少现在是这样)。首先,当我最初尝试不同的方法来修复它时,我将行
ps.AddCommand()
更改为
ps.AddScript()
,并忘记在它不起作用时将其更改回原来的行
ps.AddCommand()
显然是针对该场景调用的正确方法。这(本身)并没有解决我的问题。我找到了一个类似问题的解决方案,所以我在我的车上试了一下,结果成功了


要总结,请导航到注册表中的
HKLM\System\CurrentControlSet\Services\FsDepends
。单击DWORD值
Start
,并将其从
3
更改为
0
。重新启动以应用。显然,这与特定Windows服务的时间安排混乱有关。我不确定这是否是一个永久的解决方案,但我所有的代码现在似乎都正常了,所以我们拭目以待

您的代码看起来是正确的。确保您的
IMG
参数有效。@Icemani非常确定该参数也没有更改。它应该是图像的有效全局路径。向下滚动至“同步执行”。还有如何获取错误输出(如果有)。编辑后:是否也检查了错误流
if(ps.Streams.error.Count>0)
?是否尝试以管理员身份运行?@Fildor已完成。