从 CMD 运行它会产生正确的结果:
powershell -command "& Get-DiskImage -imagepath C:\\file.vhdx | Get-Disk"
<Here is some stuff regarding VHD>
我想通过 C# 实现完全相同的运行(没有办法直接运行它,使用一些与 PowerShell 相关的 .NET 东西,或其他东西)。
我的代码如下:
static void LaunchCommandLineApp()
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "powershell";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.RedirectStandardOutput = true;
startInfo.Arguments = "-command \" & get-diskimage -imagepath C:\\file.vhdx | Get-Disk \"";
using (Process exeProcess = Process.Start(startInfo)) {
exeProcess.WaitForExit();
var out = exeProcess.StandardOutput.ReadToEnd();
}
}
在“out”中我收到一个错误:
Get-Disk:无法验证参数“Number”的参数。参数为空。为参数提供有效值,然后再次尝试运行该命令。
但完全相同的代码在 CMD 中有效。如果我从参数中删除“| Get-Disk”,我将从Get-DiskImage cmdlet 的“out”中获得正确的输出。
另外,正如其他答案所建议的那样,我尝试使用花括号 - 错误没有改变。
我应该在“startInfo.Arguments”中输入什么,以便我的“Get-DiskImage”输出将正确地传送到下一个 cmdlet?
慕桂英3389331
相关分类