0

私のコマンド:

"7-set-up-default" : {
        "command" : { "Fn::Join" : ["", [
                                "robocopy /move C:\\inetpub\\wwwroot\\ C:\\inetpub\\wwwroot\\Default\\\n",
                                "powershell \"Import-Module WebAdministration;",
                                             "Set-ItemProperty 'IIS:\\Sites\\Default Web Site' -name physicalpath -value 'C:\\inetpub\\wwwroot\\Default\\'\""
                            ]]},
        "waitAfterCompletion" : "0"
      },

このあまり役に立たないスタック トレースで失敗します。

Error encountered during build of config: Command 07-set-up-default failed
Traceback (most recent call last):
  File "cfnbootstrap\construction.pyc", line 513, in run_config
  File "cfnbootstrap\construction.pyc", line 125, in run_commands
  File "cfnbootstrap\command_tool.pyc", line 113, in apply
ToolError: Command 07-set-up-default failed
2013-08-18 08:35:29,611 [ERROR] Unhandled exception during build: Command 07-set-up-default failed
Traceback (most recent call last):
  File "cfn-init", line 122, in <module>
  File "cfnbootstrap\construction.pyc", line 117, in build
  File "cfnbootstrap\construction.pyc", line 502, in build
  File "cfnbootstrap\construction.pyc", line 513, in run_config
  File "cfnbootstrap\construction.pyc", line 125, in run_commands
  File "cfnbootstrap\command_tool.pyc", line 113, in apply
ToolError: Command 07-set-up-default failed

ただし、コマンドをコマンド ウィンドウに直接貼り付けると問題なく動作します。

robocopy /move C:\inetpub\wwwroot\ C:\inetpub\wwwroot\Default\
powershell "Import-Module WebAdministration;Set-ItemProperty 'IIS:\Sites\Default Web Site' -name physicalpath -value 'C:\inetpub\wwwroot\Default\'"

誰でも助けることができますか?

4

1 に答える 1

1

robocopy は標準のリターン コードを使用しないためです。実際には失敗しませんが、コマンド ラインはリターン コードを失敗として解釈します。このRobocopy リターン コード リファレンスを参照してください。

必要なのは、robocopy をラップして、戻り値を次のように解釈することです。

"a-sync" : {
  "command" : {"Fn::Join" : ["",[
  "(robocopy c:\\latest c:\\inetpub\\", {"Ref" : "Name"}, " /MIR) ^& IF %ERRORLEVEL% LEQ 4 exit /B 0"
  ]]},
  "waitAfterCompletion" : "1"
},

これは機能する sript からカット アンド ペーストされているため、パラメータを変更する必要がありますが、重要な部分は robocopy コマンドを括弧で囲み、最後の ^& IF で囲むことです。

事実上、robocopy からのすべての成功リターン コードを、OS によって認識される成功コードに変換しています。

于 2013-08-20T10:27:26.677 に答える