【问题标题】:Escaping single quotes in C# powershell runspace在 C# powershell 运行空间中转义单引号
【发布时间】:2012-11-27 05:17:49
【问题描述】:

我正在尝试使用 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。我们希望它成为用户。'.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# powershell escaping exchange-server powershell-cmdlet


    【解决方案1】:

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

    string nameArg = "user1.'.cn";
    

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

    【讨论】:

      猜你喜欢
      • 2015-07-16
      • 2023-04-02
      • 2014-01-24
      • 2020-07-08
      • 2012-07-29
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      相关资源
      最近更新 更多