PsExec v2.43

作成者: Mark Russinovich

公開日: 2023 年 4 月 11 日

DownloadPsTools をダウンロード(5 MB)

はじめに

Telnet や Symantec の PC Anywhere などのリモート コントロール プログラムなどのユーティリティを使用すると、リモート システムでプログラムを実行できますが、セットアップは簡単ではなく、アクセスするリモート システムにクライアント ソフトウェアをインストールする必要があります。 PsExec は、クライアント ソフトウェアを手動でインストールする必要がなく、コンソール アプリケーションの完全な対話機能を備えた他のシステムでプロセスを実行できる軽量の telnet 置換です。 PsExec の最も強力な用途には、リモート システムでの対話型のコマンド プロンプトの起動や、リモート システムに関する情報を表示できない IpConfig などのリモート対応ツールが含まれます。

注: 一部のウイルス対策スキャナーでは、1 つ以上のツールが "リモート管理者" ウイルスに感染していると報告されています。 いずれの PsTools にもウイルスは含まれていませんが、ウイルスが使用しています。これが、ウイルス通知をトリガーする理由です。

インストール

PsExec を実行可能ファイルのパスにコピーするだけです。 「psexec」と入力すると、その使用法の構文が表示されます。

PsExec を使用する

PsExec の高度な使用に関する Mark の記事については、Windows IT Pro Magazine の 2004 年 7 月号を参照してください。

使用法:

psexec [\\\\computer[,computer2[,...] | @file]][-u user [-p psswd]][-n s][-r servicename][-h][-l][-s|-e][-x][-i [session]][-c [-f|-v]][-w directory][-d][-<priority>][-g n][-a n,n,...][-accepteula][-nobanner] cmd [arguments]
パラメーター 説明
-a アプリケーションを実行できるプロセッサを CPU で 1 が最小番号になるようコンマで区切ります。 たとえば、CPU 2 と CPU 4 でアプリケーションを実行するには、「-a 2,4」と入力します。
-c 実行するには、指定した実行可能ファイルをリモート システムにコピーします。 このオプションを省略した場合、アプリケーションはリモート システム上のシステム パスに入っている必要があります。
-d プロセスが終了するまで待つ必要はありません (非対話型)。
-e 指定されたアカウントのプロファイルを読み込まないでください。
-f リモート システム上にファイルが既に存在する場合でも、指定されたプログラムをコピーします。
-i リモート システム上で指定したセッションのデスクトップと対話するようにプログラムを実行します。 セッションが指定されていない場合、プロセスはコンソール セッションで実行されます。 このフラグは、(リダイレクトされた Standard IO を使用して) コンソール アプリケーションを対話的に実行する場合に必要です。
-h ターゲット システムが Vista 以上である場合は、アカウントの昇格されたトークン (使用可能な場合) でプロセスが実行されます。
-l プロセスを制限付きユーザーとして実行します (管理者グループを削除し、ユーザー グループに割り当てられた特権のみを許可します)。 Windows Vista では、プロセスは低い整合性で実行されます。
-n リモート コンピューターに接続するタイムアウトを秒単位で指定します。
-p ユーザー名の省略可能なパスワードを指定します。 これを省略した場合は、非表示のパスワードを入力するように求められます。
-r 作成または操作するリモート サービスの名前を指定します。
-s システム アカウントでリモート プロセスを実行します。
-u リモート コンピューターにログインするための省略可能なユーザー名を指定します。
-v 指定したファイルのバージョン番号が大きいか、リモート システムのバージョン番号より新しい場合にのみ、指定したファイルをコピーします。
-w (リモート コンピューターに対して) プロセスの作業ディレクトリを設定します。
-x Winlogon セキュア デスクトップに UI を表示します (ローカル システムのみ)。
-priority プロセスを別の優先度で実行するには、-low、-belownormal、-abovenormal、-high、または -realtime を指定します。 -background を使用して、Vista でメモリと I/O の優先度が低い場合に実行します。
コンピューター PsExec で指定したリモート コンピューターまたはコンピューターでアプリケーションを実行するように指示します。 コンピューター名を省略すると、PsExec はローカル システムでアプリケーションを実行し、ワイルドカード (\\*) を指定すると、PsExec は現在のドメインのすべてのコンピューターでコマンドを実行します。
@file PsExec は、ファイルに一覧表示されている各コンピューターでコマンドを実行します。
cmd 実行するアプリケーションの名前。
arguments 渡す引数 (ファイル パスはターゲット システムの絶対パスである必要があることに注意してください)。
-accepteula このフラグは、ライセンス ダイアログの表示を抑制します。
-nobanner このフラグを使うと、スターアップ バナーおよび著作権メッセージが表示されなくなります。

名前にスペースを含むアプリケーションは、引用符で囲むことができます (例:

psexec \\marklap "c:\\long name app.exe"

入力は、Enter キーを押したときにのみリモート システムに渡されます。 Ctrl キーを押しながら C を押して、リモート プロセスを終了します。

ユーザー名を省略すると、プロセスはリモート システム上のアカウントのコンテキストで実行されますが、(なりすましのため) ネットワーク リソースにアクセスできません。 リモート プロセスでネットワーク リソースへのアクセスが必要な場合、または別のアカウントで実行する必要がある場合は、Domain\User 構文に有効なユーザー名を指定します。 パスワードとコマンドは、リモート システムへの転送中に暗号化されることに注意してください。

PsExec によって返されるエラー コードは、PsExec ではなく、実行するアプリケーションに固有です。

この記事では、PsExec のしくみについて説明し、その使用方法に関するヒントを示します。

次のコマンドは、\\marklap で対話型のコマンド プロンプトを起動します。

psexec -i \\marklap cmd

このコマンドは、/all スイッチを使用してリモート システムで IpConfig を実行し、生成される出力をローカルに表示します。

psexec -i \\marklap ipconfig /all

このコマンドは、プログラム test.exe をリモート システムにコピーし、対話的に実行します。

psexec -i \\marklap -c test.exe

リモー トシステムがシステムのパスにない場合は、既にインストールされているプログラムへの完全パスを指定します。

psexec -i \\marklap c:\bin\test.exe

システム アカウントで Regedit を対話的に実行して、SAM キーと SECURITY キーの内容を表示します。

psexec -i -d -s c:\windows\regedit.exe

制限付きユーザー特権と同様にインターネット エクスプローラーを実行するには、次のコマンドを使用します。

psexec -l -d "c:\program files\internet explorer\iexplore.exe"

DownloadPsTools をダウンロード(5 MB)

PSTools

PsExec は、PsTools という名前のローカル システムとリモート システムの管理に役立つ Sysinternals コマンド ライン ツールのキットの一部です。

実行場所:

  • クライアント: Windows 8.1以降。
  • サーバー: Windows Server 2012 およびそれ以降。