2013-07-13 3 views
0

내가 파일을 REPLACE 옵션으로 실행하거나 할 때 작동합니다 "ReplaceTagsOnConfigFiles.ps1"로 배치 파일을 통해 REPLACE 명령을 전달하여 해결책을 찾기 위해 노력하고 실패 [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 

상기 배치 파일 실행되고, 그것은 다음과 같이 메시지를 팝업 : ROLLBACK]

는 아래 배치 파일이다.

가능한 명령 :
은 * 매의 .config에서 새 구성을 얻을 AML 파일을 .X 모든 문자열을 교체합니다.
* 현재 구성을 제거하고 이전 구성을 검색합니다 (이전에 대체해야 함).

ReplaceTagsOnConfigFiles.ps1 [REPLACE |

교체 롤백] 새 구성을 구축하는 모든의 .config과 .xaml 파일의 모든 문자열을 대체합니다.
ROLLBACK 백업에서 이전 구성 검색. 참고 :이 옵션은 이전에 '대체'를 사용한 경우에만 유용합니다.


어떤 파일이 친절하게이 점에서 나를 도와

를 대체하지 않습니다.

답변

1

변경이 명령이에

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

:

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

첫 번째 명령은 실행 정책을 변경하는 건가요? 그렇다면 실제 정책을 지정해야합니다. 인수가없는 Set-ExecutionPolicy은 작동하지 않습니다. 게다가, 단지 두 번째 명령에 -ExecutionPolicy Bypass를 추가하는 것이 더 간단 할 것 :

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

위의 내용을 변경하여 배치 파일로 실행하면 생성 된 로그 파일을 찾을 수없고 명령에서 배치 파일을 끌어다 놓을 때 찾을 수 없습니다. 프롬프트에서 다음과 같이 정보를 throw합니다. WARNING 이미 일부 백 파일이 있습니다. 이 과정을 계속 하시겠습니까? [Y] 예 [N] 아니오 [?] 도움말 (기본값 : "N") : Y – user2578953

+0

실행 정책 처리가 예상대로 작동하지 않는다고 생각합니다. 업데이트 된 답변보기 PowerShell 코드를 보지 않고도 경고에 관해 말할 수 없습니다. –

+0

여기에 코드를 붙여 넣을 수 없습니다. 이것에 대한 다른 해결책이 있습니까? – user2578953

0

당신이지고있어 오류가 직접 PowerShell을에서 아닙니다. 대부분 (마지막 줄을 제외한 모든 항목)은 ReplaceTagsOnConfigFiles.ps1입니다. 문제는 (오류 메시지로 표시)이 스크립트가 기대 중 인수로 또는 ROLLBACK 교체한다는 것입니다,하지만 당신은 그것을 인수를 전달하지 있습니다. 세미콜론은 cmd에서 앰퍼샌드를 사용하는 것과 같은 명령 구분 기호이므로 PowerShell에서 먼저 인수없이 D:\test\Bluebird_1.2.0_RTM\ReplaceTagsOnConfigFiles.ps1을 실행하도록 지시합니다. 그런 다음 인수없이 REPLACE 명령을 다시 실행합니다. 그것이 "대체 된 파일 없음"오류입니다.

당신이해야 할 모든 ReplaceTagsOnConfigFiles.ps1보다는 새로운 명령에 인수를 교체하기 위해, 공백으로 세미콜론을 대체합니다.


BTW, 앰퍼샌드의 말하기, 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 
+0

stackoverflow를 처음 접했기 때문에 답변으로 문제가 해결되면 해당 답변의 왼쪽에있는 체크 표시를 클릭하여 승인 된 것으로 표시해야합니다. –