PsExec

作成者: Mark Russinovich

PsTools のダウンロード
(1.31 MB)

WR 98635 404 error fixed概要

Telnet などのユーティリティや Symantec pcAnywhere などのリモート コントロール プログラムを使用すると、リモート システムでプログラムを実行できます。ですが、設定するのがたいへんなうえに、アクセスするリモート システムにクライアント ソフトウェアをインストールする必要があります。PsExec は Telnet に代わる軽量のユーティリティで、クライアント ソフトウェアを手動でインストールしなくても、他のシステムでプロセスを実行できるだけでなく、コンソール アプリケーションとの十分な対話性も備わっています。PsExec の最も便利な用途には、たとえば、リモート システムで対話型のコマンド プロンプトを起動したり、ipconfig のようなリモートの実行に対応したツールを起動したりすることが挙げられます。PsExec で起動しない限り、そのようなツールにはリモート システムについての情報を表示する機能がありません。

注: ウイルス検出プログラムによって 1 つ以上のツールが RemoteAdmin ウイルスに感染していると報告されることがあります。PsTools にウイルスが含まれていることはありませんが、ウイルスによって PsTools が使用されたことがあります。ウイルスの検出通知が表示されるのは、このためです。

インストール

PsExec を実行可能なパスにコピーします。「psexec」と入力すると、構文が表示されます。

PsExec の使用法

PsExec の使用方法の詳細については、『Windows IT Pro Magazine』の 2004 年 7 月号の記事「PsExec (英語)外部サイトへ」を参照してください。

使用法: psexec [\\<コンピューター>[,<コンピューター2>[,...] | @<ファイル>][-u <ユーザー> [-p <パスワード>]][-n s][-l][-s|-e][-x][-i [<セッション>]][-c [-f|-v]][-w <ディレクトリ>][-d][-<優先度>][-a n,n,... ] cmd [<引数>]

<コンピューター> 指定した 1 台以上のコンピューターでアプリケーションを実行するように指示します。コンピューター名を省略すると、PsExec ではローカル システムでアプリケーションを実行します。コンピューター名を「\\*」と指定した場合は、現在のドメイン内のすべてのコンピューターでアプリケーションを実行します。
@<ファイル> 指定したテキスト ファイルに記載されている各コンピューターでコマンドを実行するように指示します。
-a アプリケーションの実行に使用できるプロセッサをコンマ区切りで記載します (一番小さな CPU 番号は 1 です)。たとえば、CPU 2 と CPU 4 でアプリケーションを実行する場合は「-a 2,4」と入力します。
-c 指定したプログラムを実行するために、リモート システムにコピーします。このオプションを省略する場合、アプリケーションはリモート システムのシステム パスに存在している必要があります。
-d アプリケーションが終了するのを待ちません。このオプションは、非対話型のアプリケーションにのみ使用します。
-e 指定したアカウントのプロファイルを読み込みません。
-f リモート システムにファイルが存在する場合も、指定したプログラムをコピーします。
-i プログラムを実行して、リモート システムの指定したセッションのデスクトップと対話するようにします。セッションを指定しないと、プロセスはコンソール セッションで実行されます。
-l (Administrators グループを削除して、Users グループに割り当てられている特権のみを許可する) 制限付きのユーザーとしてプロセスを実行します。Windows Vista では、プロセスは低い整合性で実行されます。
-n リモート コンピューターへの接続のタイムアウトを秒単位で指定します。
-p ユーザー名のパスワードを指定します (これはオプションです)。省略すると、隠しパスワードの入力を要求するメッセージが表示されます。
-s System アカウントで、リモート プロセスを実行します。
-u ログイン用のユーザー名をリモート コンピューターに指定します (これはオプションです)。
-v 指定したファイルのバージョン番号がリモート システムにあるファイルのバージョン番号よりも大きいか、新しい場合のみ、指定したファイルをコピーします。
-w (リモート コンピューターから見た相対パスで) プロセスの作業ディレクトリを設定します。
-x Winlogon デスクトップの UI を表示します (ローカル システムのみ)。
-<優先度> -low、-belownormal、-abovenormal、-high、または -realtime を指定して、さまざまな優先度でプロセスを実行します。Windows Vista では、-background を使用してメモリと I/O の優先度が低い状態で実行します。
<プログラム> 実行するプログラム名です。
<引数> 渡す引数です (ファイル パスは、対象システムの絶対パスで指定する必要があります)。

ファイル パスに空白文字が含まれているアプリケーションは、"psexec \\marklap "c:\long name\app.exe" のように二重引用符で囲んで指定します。入力は、Enter キーを押したときに、リモート システムに渡されます。また、Ctrl キーを押しながら C キーを押すと、リモート プロセスが終了します。

ユーザー名を省略すると、リモート プロセスは、PsExec の実行に使用したのと同じアカウントで実行されます。ただし、リモート プロセスはアカウントを偽装しているので、リモート システムではネットワーク リソースへのアクセス権はありません。ユーザー名を指定すると、リモート プロセスは指定のアカウントで実行され、そのアカウントがアクセスできるネットワーク リソースにアクセスできます。パスワードは、クリア テキストでリモート システムに送信されることに注意してください。


私が書いた次の記事では、PsExec のしくみを解説し、使用法についてのヒントを提供しています。

http://windowsitpro.com/article/articleid/42919/psexec.html (英語)外部サイトへ

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

psexec \\marklap cmd

次のコマンドでは、/all スイッチを指定した状態で ipconfig をリモート システムで実行して、結果の出力をローカルで表示します。

psexec \\marklap ipconfig /all

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

psexec \\marklap -c test.exe

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

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

次のコマンドでは、regedit を System アカウントで対話的に実行し、SAM キーと SECURITY キーの内容を表示します。

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

次のコマンドでは、Internet Explorer を、制限された特権を持つユーザーとして実行します。

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

 

ダウンロード

PsTools のダウンロード
(1.31 MB)

 

 

 ページのトップへ

ダウンロード

PsExec は、PsTools という Sysinternals のコマンド ライン ツールキットの一部です。PsTools は、ローカル システムとリモート システムの管理をサポートするツールキットで、収録されているツールの数は増えています。

ダウンロード

PsTools のダウンロード
(1.31 MB)

 

動作環境

  • クライアント: Windows XP 以降
  • サーバー: Windows Server 2003 以降