やる気ないSEのメモ

色々手を出す上に忘れっぽいのでやったことをメモしておく場所に。

PSexecについて

今日は地味に早く帰れた。
以前の記事でpstoolsについて触れたので、今回はその中の一つ、psexecについて触れてみます。

psexecとは

簡単に説明すると、リモートから任意のプログラムを実行できるツールです。
権限さえあれば何でも実行できてしまうので、場合によってはセキュリティホールにすらなり得ます。

使い方次第では、自動インストールスクリプトなんかも組み放題かなと。
色々触ってみて、使い勝手は非常に良かったので、紹介します。

制約事項

コマンドプロンプトから実行する必要がある
・初回実行時に利用規約が表示されるので、Agreeを選ぶか -accepteula スイッチをつけて実行すること。
・ユーザを指定しない限り、コマンドプロンプトを起動したユーザの権限で実行される。

よく使う引数

-d アプリケーション終了を待たない。非対話型のアプリケーションのみで利用すること。
-i 対象端末の指定したセッションのデスクトップで実行する。
セッションを指定しない場合、コンソールセッションで実行される。
-l 制限付きのユーザーで実行する。
-s System アカウントで実行する。
-accepteula 利用規約に同意する。

※他の引数については、参考文献を参照のこと。

コマンド例文

psexec -s -i セッションID \\端末名(or IPアドレス) "実行プログラム"

 →対象の端末に対して、対話型でプログラムを実行する

用途

例えば、以下のようなことが可能です。
 ※相手の端末に対して管理者権限を持つユーザで実行している前提
 ※対象はWindows Clientとする。

Computer-1のIPアドレスを調べる

psexec -s \\Computer-1 ipconfig

コマンドに -i オプションをつけると、相手側に結果が表示される。
ただし、ipconfigの場合は一瞬だけプロンプトが開いて終了する。

Computer-2のセッション一覧を調べる

psexec -s \\Computer-2 query session

■結果

セッション名 ユーザー名 ID 状態 種類 デバイス
services 0 Disc
>console TESTadmin 1 Active
rdp-tcp 65536 Listen

こちらも同じく、-iをつけると相手側に一瞬表示される。

コンソールでログインしているComputer-3でソフトウェアのインストールを行う

psexec -s -i \\Computer-3 "TEST-installer.exe"

相手側に、インストーラの画面が立ち上がる。
また、インストーラが終了するまでコマンドは応答待ちとなる。

  • d オプションをつけることにより、相手の応答を待たずに次のコマンドを実行可能となる。

RDPでログインして作業しているComputer-4でファイルサーバにあるプログラムを実行する

psexec -s -i 2 \\Computer-4 "\\FileServer\Program\TEST.exe"

リモートデスクトップで接続しているときは、セッションIDが異なるため、-i オプションのあとに
セッションIDを付与する必要がある。
Windows Clientの場合は同時接続セッション数は1のため、大体セッションIDが2となる。
 ※サーバの場合は接続数が複数あるので、これには当てはまらない。
  query sessionコマンドなどで確認すること。