Powershell中的字符串替换因Windows版本而异

时间:2014-03-13 18:45:41

标签: powershell windows-8.1 powershell-v3.0 windows-server-2012 powershell-v4.0

以下PowerShell脚本:

$srch = '-v\s*(.*?)\s*=\s*%1'
$repl = "-v `'`$1'` = %1"
(Get-Content batchfile.bat) -replace $srch, $repl | Set-Content rave.bat

从Windows 8.1计算机生成这些结果:

sqlcmd -S rave -v 'test me' = %1 -i rave_params.sql -o alert.txt

相同的脚本从Windows 2012服务器生成这些结果:

sqlcmd -S rave -v test me = %1 -i rave_params.sql -o alert.txt

该脚本应该产生结果,在文本周围留下单引号。它在Windows 8.1机器上运行良好,但在Windows Server 2012上运行不正常。我有什么想法可以在Windows Server 2012上产生相同的结果?

1 个答案:

答案 0 :(得分:0)

如果没有样本输入,很难测试,但这会给你带来更好的结果吗?

$srch = '-v\s*(.*?)\s*=\s*%1'
$repl = @'
-v '$1' = %1
'@