0

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

http://technet.microsoft.com/en-us/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'

新邮箱实际创建的名称为user.''.cn。我们希望它是 user.'.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);

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

4

1 回答 1

0

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

string nameArg = "user1.'.cn";

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

于 2012-11-26T21:17:49.187 回答