将PowerShell参数传递给Process.Start

时间:2018-09-04 16:58:25

标签: c# powershell command-line-arguments

我正在尝试将一些蝙蝠脚本转换为C#。 除了PowerShell执行行,我已经移植了整个程序。

为简单起见,我试图从cmd调用PowerShell命令。 我能够这样做,但不会采用PowerShell命令附带的复杂参数和参数。

如果我直接从cmd或bat文件运行,这是命令。

powershell -Command "& {asnp 'citrix*'; remove-BrokerTag -Name 'Somename' -Machine 'domain\server' -AdminAddress 'SomeServer';}"

我正在使用此代码来调用cmd并运行我的powershell命令。

string strCmdText;
strCmdText = "'/C powershell " + "-Command " + "&" + " { asnp 'citrix*'; add - BrokerTag - Name 'Somename' - Machine 'domain\server'" + (listboxvariable) + " - AdminAddress 'ServerXX'; }'" + " & pause";
System.Diagnostics.Process.Start("CMD.exe", strCmdText);

我收到此错误 “由于缺少参数,无法处理命令。命令必须跟随-Command。”

如您所见,此PowerShell命令中有很多参数。

有更简单的方法吗?还是我只是缺少一些简单的东西?

1 个答案:

答案 0 :(得分:4)

在原始的PowerShell行中,https://mail.google.com/mail/#inbox/message-id-here用双引号引起来。

尝试一下:

Command

请注意使用strCmdText = "/C powershell " + "-Command " + "\"& " + "{ asnp 'citrix*'; add - BrokerTag - Name 'Somename' - Machine 'domain\server'" + (listboxvariable) + " - AdminAddress 'ServerXX'; }\"" + " & pause"; 转义序列来添加原始命令行中缺少的双引号。