0

C#でSystem.Automationdllを使用してExchangeコマンドレットを実行しようとしています。

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

ただし、コマンドレットで同じことを実行しようとすると、

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

新しいメールボックスは、実際にはユーザーとしての名前で作成されます。''。cn。user。'。cnこのコマンドレットを実行するコードは次のとおりです。

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# でコマンドレットを呼び出す場合、C# の文字列引用動作についても考慮する必要があります。あなたの質問では、C#コードで Name パラメータを正確に何に設定しているのか明確ではありません。私はこれを試してみます:

string nameArg = "user1.'.cn";

つまり、API 経由で引数を直接指定しているため、PowerShell API はパラメーター解析フェーズをバイパスする必要があります。

于 2012-11-26T21:17:49.187 に答える