下面的PowerShell腳本:字符串替換跨Windows版本的不同
$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上產生相同的結果?
如果你能提供一個能夠產生輸出結果的例子字符串嗎?是否可能是$ repl字符串中的第二個單引號在引號之前有反引號,而不是在引號之後? – HAL9256
這兩個系統上是否有不同版本的PowerShell? – David
Windows 8.1帶有PowerShell v4,Windows Server 2012(不是R2)和PowerShell v3。此外,您似乎在代碼中存在拼寫錯誤。 '$ repl'中的最後一個反引號在單引號之前*。 –