在C#powershell运行空间中转义单引号



我正在尝试使用C#中的System.Automation dll运行Exchange cmdlet。

在http://technet.microsoft.com/en-us/library/dd315325.aspx,他们说,对于转义单引号,我们基本上需要将其附加另一个单引号

例如,

[PS] C:Windowssystem32>Write-Host 'Live and let le''arn'
Live and let le'arn

然而,当我尝试用我的cmdlet 做同样的事情时

New-Mailbox -Name 'user1.''.cn'

新邮箱实际上是以用户名创建的。"。cn。我们希望它成为用户。cn执行此cmdlet的代码如下:

AutomatedRunspace.Command command = new AutomatedRunspace.Command(cmdlet.Command);
foreach (CmdletParameter param in cmdlet.GetParameters())
{
command.Parameters.Add(param.Name, param.Value);
}
pipeline.Commands.Add(command);

我们能做些什么来正确地逃离它吗?

在C#中调用cmdlet时,还需要担心C#字符串的引用行为。在您的问题中,还不清楚您在C#代码中究竟将Name参数设置为什么。我会试试这个:

string nameArg = "user1.'.cn";

也就是说,PowerShell API应该绕过参数解析阶段,因为您直接通过API提供参数。

最新更新