1

簡単に言えば、Windows マシンにリモートでソフトウェアをインストールしてコマンドを実行できるようにするプログラムを作成しました。サーバーがインストールの完了を待つ必要がないように、START コマンド (ここにあるスタックオーバーフローに関する別の投稿から学んだこと) を使用して RPC 経由でバッチ ファイルを実行しています。これは、私がこれを書いた学区の 1000 台のコンピューターのほとんどで正常に動作しますが、START がバッチ ファイルを実行しないコンピューターがいくつかあります。エラー メッセージが表示されず、行ったすべての検索で START コマンドの使用方法の例がさらに見つかるだけです。単に実行されていないことへの参照を見つけることができませんでした。

私のサーバーは Linux で、RPC に winexe を使用しています。これが私が実行しているコマンドです。

winexe -W domain -U adminUser --password=adminPassword //compName.domain.internal --runas=domain\\adminUser%adminPassword "\\\\Server\\PathToBatch\\run.cmd \\\\Server\\PathToBatch\\install.cmd"

run.cmd コードは以下のとおりです。

START %1
exit

install.cmd バッチ ファイルは、プログラムが何をインストールするかに応じて、私のプログラムによって生成されます。Linux では \ がエスケープ文字であるため、コマンド内の余分な \s はエスケープ文字です。

私が得る出力は次のとおりです。

C:\WINDOWS\system32>start \\Server\PathToBatch\install.cmd 
C:\WINDOWS\system32>exit

エラー メッセージは表示されず、正常に起動するコンピューターでも出力は同じです。

RPC を介して実行されるのとまったく同じように、マシンのコマンド プロンプトからコマンドを実行しようとしましたが、正常に動作します。RPC を使用して install.cmd を単独で実行できます。インストールが完了するまで待つ必要があることを除けば、問題なく動作します。まったく同じバッチ ファイルを他のコンピューターで問題なく実行できます。

動作しているコンピューターでタスク マネージャーを監視すると、adminUser によって実行される cmd プロセスが表示され、次に 2 番目の cmd プロセスが開始され、最初のプロセスが消えます。動作していないコンピューターでは、最初の cmd プロセスが開始され、2 番目の cmd プロセスが開始されることなく終了します。

動作しているコンピューターと動作していないコンピューターの違いを見つけることができませんでした。コンピュータにファイアウォールはありません。

夏休み中にこれらのコンピューターのイメージを再作成し、その後はおそらく動作を開始すると予想されるため、これを理解することは緊急ではありません. 主に、他のマシンで将来失敗するのを防ぐために、なぜ機能しないのかを知りたいです。

あなたが私に与えることができる助けを前もって感謝します。

4

1 に答える 1

0

start "" %1の代わりに試してくださいstart %1\\Server\PathToBatchまた、コマンドが失敗したマシンでrunas ユーザーが実際にアクセスできるかどうかも再確認してください。

于 2013-05-12T00:08:09.157 に答える