2016-10-05 14 views
0

私は、DEV Web設定エントリをQA値に置き換えるPowerShellスクリプトを用意しています。二重引用符をエスケープする-replace

これまでのところは良いが、今私は二重引用符でいくつかの値を持っている:私は実行時に

(Get-Content $targetFile) | 
     Foreach-Object {    
      $_ -replace "<add key="Path" value="/DEV/Reports" />", "<add key="WebReportsPath" value="/QA/Reports" />" ` 
       -replace "<add key="EmpReport" value="/DEV/Emp/Reports" />", "<add key="EmpReport" value="/QA/Emp/Reports" />" `           
       -replace "olddatabase", "newdatabase" 

     } | 
     Set-Content $targetFile 

私は、パーサーエラーが発生します。私は正規表現を使用している-replaceので

`-replace 'valwithdoublequote' 'valwithdoublequote' still I get parser error. How to escape this? 

答えて

4

のように単一引用符を二重引用符を変更する場合は、あなたの文字をエスケープする[regex]::Escapeを使用して(またはその代わりに$_.Replace()を使用する)必要があります。

(Get-Content $targetFile) | 
     Foreach-Object {    
      $_ -replace [regex]::Escape('<add key="Path" value="/DEV/Reports" />'), '<add key="WebReportsPath" value="/QA/Reports" />' ` 
       -replace [regex]::Escape('<add key="EmpReport" value="/DEV/Emp/Reports" />'), '<add key="EmpReport" value="/QA/Emp/Reports" />' `           
       -replace "olddatabase", "newdatabase" 

     } | 
     Set-Content $targetFile 
+0

グレートを。ありがとう。しかし、私はQA1からQAを持っているので、forループを持っています。4.カウントを置き換えることは可能ですか? '' WebReportsPath "value ="/QA "+ $ i +"/-Arequest "を使用すると、レポート "/> ''あなたが一重引用符を使用しているので、私は悪い置換の引数 – Billa

+0

を得るので、 'replace [regex] :: Escape( ' )、( '' -f $ i) ' –

関連する問題