我正在尝试使用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提供参数。