将PowerShell参数传递给Process.Start

问题描述 投票:5回答:1

我试图将我的一些bat脚本转换为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命令中有很多参数。

有更简单的方法吗?或者我只是遗漏了一些简单的东西?

c# powershell command-line-arguments
1个回答
4
投票

在原始的PowerShell系列中,Command被双引号括起来。

试试这个:

strCmdText = "/C powershell " + "-Command " + "\"& " + "{ asnp 'citrix*'; add - BrokerTag - Name 'Somename' - Machine 'domain\server'" + (listboxvariable) + " - AdminAddress 'ServerXX'; }\"" + " & pause";

请注意使用\"转义序列添加原始命令行中缺少的双引号。

© www.soinside.com 2019 - 2024. All rights reserved.