のためのPowerShell 2.0の交換が必要私はPowerShellの最近のバージョンに適していますポストビルドプロセスの一部として、次のPowerShellコマンドを使用しましたPowerShell 2.0のみがインストールされたポールダクションマシンに相当します。このマシン上でコマンドを実行すると は、私は次のエラーを取得する:はstring.replace方法
C:\Builds\29\nSKEP\Dev_Continue\src\Tests\VSTest\SKCltMgrTest>powershell.exe –command "(Get-Content VSTEST.BAT).replace('__DLL_NAME__', 'SKCltMgrTestu.dll') | Set-Content 'C:\Builds\29\nSKEP\Dev_Conti
nue\bin\VSTEST_SKCltMgrTest.BAT'
Method invocation failed because [System.Object[]] doesn't contain a method named 'replace'.
At line:1 char:33
+ (Get-Content VSTEST.BAT).replace <<<< ('__DLL_NAME__', 'SKCltMgrTestu.dll') | Set-Content 'C:\Builds\29\nSKEP\Dev_Continue\bin\VSTEST_SKCltMgrTest.BAT'
+ CategoryInfo : InvalidOperation: (replace:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
私は、必要なメソッドが唯一のPowerShellのそれ以降のバージョンで導入されたとします。
テキストファイルの文字列をPowerShell 2.0と互換性のあるone-linerで置き換える同等の方法はありますか?
にこれが失敗した理由は、偶然にではありませんが、それ以降のバージョンでは、起動する機能を導入しましたので、メソッドを同じ型のオブジェクトの配列に追加します。 '-replace'を使うのはここでの正しいアプローチですが、それが存在しなかったり十分でない場合、PowerShell 1に相当するコードは'(Get-Content VSTEST.BAT)| Foreach {$ _。replace(...}) '。 PowerShell 3(または4、これらのことに関する文書はひどいです)では、これを省略することができます。 –