2

blob から実行可能ファイルをダウンロードしてインストールに進む、webrole のスタートアップ タスクがあります。

.cmd ファイルから、ファイルをダウンロードする Power Shell スクリプトを開始し、.cmd からファイルを開始します。

パブリッシュが完了した後に RDP を介して手動で実行すると、スクリプトは正常に動作します。

ただし、起動スクリプトとして実行すると、さまざまな時点で失敗することがあります (多くの場合)。

taskType設定されていbackgroundます。

前回は、コマンドPowerShellが存在しないというエラーでした...

また、powershell -command set-executionpolicy unrestrictedPSスクリプトを実行する前に使用しますが、他のタスクがこの設定をリセットして失敗する可能性があることをここで読みました。

かなり混乱。

そのため、他のすべてのタスクが実行されるのを待ってから開始することができれば、この種の問題は解消されると思います。

いくつかのプロセスが実行されているかどうかを確認して、それが終了するのを待つことができると思いますが、確認するプロセスがわかりません。

または、別の解決策があるかもしれません。

〜編集〜

PowerShell が存在しないというエラーは、Visual Studio でバッチ ファイルが UTF-8 として保存されていることが原因である可能性があることをここで読みました。メモ帳++で最初から書き直し、ANSIとして保存されていることを確認しました。その後、同じエラー。完全なメッセージは次のとおりです。

「PowerShell」は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されません。

繰り返しますが、スクリプトはリモート デスクトップのコマンド ラインから完全に実行されます。

4

2 に答える 2

0

終了する必要があるスクリプトの最後に環境変数を設定し、依存関係を待っているスクリプトで、環境変数が設定されるまでループしてから、そのアクティビティを開始することが可能です。

単一の PowerShell スクリプトからすべてを実行し、インストーラー ステートメントで「-asjob」スイッチを使用し、「wait-job」コマンドレットを使用してタスクが完了するまでブロックし、続行することもできます。Powershell は「?!」も提供します。最後のステートメントが正しく実行されるようにする演算子。

于 2012-08-04T17:51:14.107 に答える
0

これは、エンコードの問題が原因である可能性があります。この回答で述べたように、スクリプトが正しく解釈されるように、ファイルをASCIIで保存する必要があります。

リンクされた回答から:

VS 2012 Ultimate でwhatever.cmd ファイルを開きます。[ファイル] -> [whatever.cmd を名前を付けて保存] をクリックします -> ダイアログの [保存] ボタンの横に小さな矢印があります。[エンコード付きで保存] オプションを含むメニューが表示されます。

それを選択します。利用可能なエンコーディングのリストから「US-ASCII コードページ 20127」を選択します。

于 2014-11-14T19:02:12.200 に答える