使用C#生成Powershell脚本时转义字符

我使用VS2010,C#,.NET 3.5生成Powershell脚本(ps1文件)。

然后,它是Powershell的必需转义字符。

有关它的任何建议,以开发逃避字符的好方法吗?

public static partial class StringExtensions { /* PowerShell Special Escape Sequences Escape Sequence Special Character `n New line `r Carriage Return `t Tab `a Alert `b Backspace `" Double Quote `' Single Quote `` Back Quote `0 Null */ public static string FormatStringValueForPS(this string value) { if (value == null) return value; return value.Replace("\"", "`\"").Replace("'", "`'"); } } 

用法:

 var valueForPs1 = FormatStringValueForPS("My text with \"double quotes\". More Text"); var psString = "$value = \"" + valueForPs1 + "\";"; 

另一种选择是使用正则表达式:

 private static Regex CharactersToEscape = new Regex(@"['""]"); // Extend the character set as requird public string EscapeForPowerShell(string input) { // $& is the characters that were matched return CharactersToEscape.Replace(input, "`$&"); } 

注意:您不需要转义反斜杠:PowerShell不会将它们用作转义字符。 这使得编写正则表达式更容易一些。