PowerShell:使用$ ExecutionContext.InvokeCommand.ExpandString($ var)的双引号

时间:2012-11-15 22:15:08

标签: parsing variables powershell

好的,我已经编写了一个在Windows 8中完美运行的脚本。我切换到Windows 7并获得各种血液。经过一些调试,我发现了问题。 Win 8使用PowerShell 3.0,Win 7使用PowerShell 2.0和PowerShell 3.0允许您在使用时使用双引号:

$ExecutionContext.InvokeCommand.ExpandString($var)

由于我的代码在许多使用双引号的字符串中严重依赖于此,我正在尝试找到解决方案。

这里 - 字符串没有用,因为我的一些字符串是这样的:

$var = 'this is a "sample" of $one of my strings'

here-string解决方法仅在我输出到文本文件时才有效,因为我在函数中大量使用此代码,所以我不想这样做。

我在微软的网站上发现了与此相关的错误。它在PowerShell 3.0中的工作方式是它最初的工作方式。此外,将Windows 7升级到PowerShell 3.0是不可能的。

2 个答案:

答案 0 :(得分:6)

您可以测试小于3的PowerShell版本,然后转义任何双引号,如下所示:

C:\PS> if ($PSVersionTable.PSVersion.Major -lt 3) { $var = $var -replace '"','`"' }

C:\PS> $ExecutionContext.InvokeCommand.ExpandString($var)
this is a "sample" of one baby of my strings

答案 1 :(得分:0)

如何将$ var括在双引号中?