0

ファイルが REPLACE オプションで実行されたときに「ReplaceTagsOnConfigFiles.ps1」が機能するため、バッチファイルを介して REPLACE コマンドを渡すことによって解決策を見つけようとしています。ロールバック]

以下はバッチファイルです。

echo "Changing the execution policy"
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command {Set-ExecutionPolicy} > C:\Temp\a.out

echo "Updating the Server details:"

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1;REPLACE" > C:\Temp\b.out

上記のバッチファイルを実行すると、以下のようなメッセージが表示されます。

利用可能なコマンド:
* すべての文字列を置き換えて、すべての .config および .x aml ファイルから新しい構成を取得します。
* 現在の構成を削除し、古い構成を取得します (置換は前に実行する必要があります)。

ReplaceTagsOnConfigFiles.ps1 [置換 | ROLLBACK]

REPLACE すべての .config および .xaml ファイル内のすべての文字列を置き換えて、新しい構成を構築します。
ROLLBACK バックアップから古い構成を取得します。注: このオプションは、以前に「置換」を使用した場合にのみ役立ちます。


置き換えられたファイルはありません

この点で私を助けてください。

4

2 に答える 2

0

発生しているエラーは、PowerShell から直接発生したものではありません。そのほとんど (最後の行を除くすべて) はReplaceTagsOnConfigFiles.ps1からのものです。問題は、このスクリプトが引数としてREPLACEまたはROLLBACKのいずれかを想定している (エラー メッセージで示されている) のに、引数を渡していないことです。D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1セミコロンはコマンドの区切り文字 (cmd でアンパサンドを使用する場合と同様) であるため、最初に引数なしで単独で実行するように PowerShell に指示しています。REPLACE次に、引数なしでコマンドを実行しています。これが、「ファイルが置き換えられませんでした」というエラーが発生する理由です。

REPLACEを新しいコマンドではなく、ReplaceTagsOnConfigFiles.ps1への引数にするために、セミコロンをスペースに置き換えるだけです。


ところで、アンパサンドといえば、PowerShell では、非ネイティブ コマンド (.ps1 スクリプト ファイルを含む) を実行するために使用されます。パスにスペースがないため、ここでの方法は機能しますが、パスを引用する必要がある場合は問題が発生します (Powershell は、パスを実行するのではなく、文字列としてエコーします)。これを行う習慣を身に付ける必要があります。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "& 'D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1' REPLACE" > C:\Temp\b.out
于 2013-07-13T19:22:58.017 に答える