繁体   English   中英

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

[英]Escaping single quotes in C# powershell runspace

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

http://technet.microsoft.com/zh-cn/library/dd315325.aspx中 ,他们说过,为了转义单引号,我们基本上需要在其后面附加另一个单引号。

例如,

[PS] C:\Windows\system32>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提供参数的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM