web-dev-qa-db-ja.com

PsExecを使用して共有フォルダーからアプリをリモートで実行する

私は実際にこれが可能かどうかわかりません。どれどれ:

ビルドサーバーで実行されるスクリプトがあります。このサーバーにAという名前を付けましょう。
ビンをサーバーBの共有フォルダーにドロップします。サーバーCでプログラムを実行したいと思います。

したがって、caspolを使用すると、実行可能ファイルをリモートで実行できるようになります。つまり、Bから\ C\shared\my.exeを実行できます

私がやりたいのは、AからBで\ C\shared\my.exeを実行することです。

SysInternals\PsExec.exe -u username -p password -accepteula \\ServerC -i 0 -d -w \\ServerB\Nightly\Server \\ServerB\Nightly\Server\server.exe

ユーザーには必要なすべての権限があります。

しかし、-w(作業ディレクトリ)オプションは、私が指しているサーバーからの相対パスを必要としているようです。何か案が?

1
Stephane

アプリケーションが何をするのかを知らずに、作業パスを定義する必要がありますか?私は間違っているかもしれませんが、UNCパスがサポートされているとは思いませんか?ちょっとしたトリックで、ネットワークドライブのマップを作成し、それをスクリプトにバンドルするのはどうですか?何かのようなもの:

pushd \\ServerB\Nightly\Server
server.exe
popd

これをスクリプトに入れて、psexecを使用して呼び出します。

psexec -u username -p password \\machine -accepteula -i 0 -d \\serverb\nightly\server\myscript.bat

pushd コマンドは、次に使用可能なドライブ文字を共有にマップしてから、ディレクトリをその新しいマップに変更します。 popd 前のパスに戻り、ドライブをアンマウントします。

1
Jon Angliss

私はこのようにそれを行うことができました:

psexec -s -username domain\username -p MyPassw@rd @c:\temp\computers.txt \\fileserver\SCCMClient\CCMSetup.exe

-s「アクセス拒否」エラーが発生しないようにする必要がありました-usernameおよび-p実行可能ファイルを使用してファイルサーバーに接続するために必要でした

個人的には、PSExecは素晴らしい小さなツールだと思います。

0

スクリプトでは、実行したいものをローカルマシンのディスクにコピーし、実行後に削除することができます。 robocopy.exe\UNC-Path LocalDestionationを使用してファイルをコピーし、実行してから削除します。使用する%Temp%などの環境変数が常にあることを忘れないでください。

Sysinternals PSExecを使用して実行しているケースでは、PSExecで開始されたすべてのバットラインを実行するバットを作成してみることができます。ユーザー名などにSETコマンドを使用すると、バットで環境変数を使用できます。

別の方法簡単なGUIでリモートコマンドを非常に簡単に実行できるこのフリーソフトウェアをテストすることをお勧めします: PQD Deploy

0
Ricardo Polo

psexecが1つのAFAIKを要求せず、これが有効ではないように見えるため、「-accepteula」スイッチについてもよくわからない(ユーザーのプロファイルをロードしようとしない)-eスイッチでも試してください。 psexecのスイッチ...

2つのスイッチ「-i」と「-d」は互いに矛盾しています。-iはインタラクティブに実行し、-dは非インタラクティブアプリケーションでのみ使用するように指示しているためです。どちらのスイッチも使用する必要はありませんでした。

私が見つけたリモートシステムに関連する厄介な操作に取り組む最善の方法は、最初にローカルで実行してから、さまざまなコンポーネントをリモートボックスにゆっくりと移動し、そこから動作させることです。そうすれば、最初の試みの構文のどこに問題があるのか​​を正確に把握できます。

psexecの使用法

0
August