有用性の面でrobocopyと競合できるコマンドラインユーティリティがあった場合、それはPsExecです。 Sysinternals PsExecユーティリティは、IT管理者の武器と同じくらい遍在しています。 このツールできることで、管理者は遠隔で実行コマンドしいただけたようでしたのです。

PsExecツールを詳細にカバーするために、ATA Ultimateガイドでこの切望されたツールをカバーするのにふさわしいものでした。 このガイドでは、psexecが何であるか、この便利なツールを使用する方法の多くの例が可能なものを学びます。,p>

目次

PsExecとは何ですか。エグゼ?

あなたがそれに慣れていないか、おそらくリモートコンピュータ上でコマンドやツールを実行する必要がなかった場合は、psexecが何であるかわからない

PsExecまたはpsexec。エグゼはコマンドラインユ築します。 でできることで、管理者はこのプログラムは、一般的には”リモートコンピュータ これは、何年も前にMark Russinovichによって構築されたSysinternals pstoolsスイートの無料のユーティリティ部分です。,

に建てられた交換のリーディングプロジェクトtelnetが、ここまで代表でやれているときに開くポートを紹介ィ脆弱性があります。 今日では、PowerShell RemotingやInvoke-CommandPowerShellコマンドレットなどの他のオプションがありますが、PsExecにはまだその場所があります。

PsExecは、ソフトウェアをインストールすることなく、コンソールアプリケーションの完全な対話 この究極のガイドでわかるように、PsExecは対話型コマンドプロンプトを起動したり、リモートコンピュータ上でローカルシステムとして実行したり、複数のコ,

これは、Windows XP以降のWindowsのすべてのバージョンをサポートしています。 つまり、はい、Windows10のPsExecもそうです。 シンプルなツールを施設まで格安料金プランを作品においては、ほとんどすべてがわからないな混乱させ、その素朴さと力!

前提条件

ローカルコンピュータでPsExecを実行するには、最新のWindowsオペレーティングシステムを実行するだけです。 ただし、リモートコンピュータに対してpsexecを実行する必要があります。 これを行うには、いくつかの項目が所定の位置にあることを確認する必要があります。

これらのアイテムが今のところない場合、またはわからない場合は、心配しないでください。, 次のセクションでは、リモートコンピューターをテストするPowerShellの作成方法について説明します。

  • 最新のWindowsコンピュータ(ローカル)
  • ファイルとプリンタの共有オープン(リモートコンピュータ、TCPポート445)
  • admin$administrative share available(リモートコンピュータ)
  • ローカルアカウントの資格情報を知っている

この記事の執筆時点では、PsExecはv2.2であり、この記事で学ぶバージョンになります。,

PSexecのインストール(リモートコンピュータセットアップ付き)

技術的には、PsExecは単なるコマンドラインユーティリティですが、十分に近いため、インストール インストールは必要ないので、PsTools zipファイルからダウンロードして抽出するだけです。 PsExecはスタンドアロンユーティリティとしては利用できず、PsToolsスイートのツールの一部です。

PSExecのダウンロード

ZIPファイルを手動で抽出するか、pstools ZIPファイルからPsExecをダウンロードして抽出するための便利なPowerShellスニペットです。 これにより、他のすべてのPsToolsツールが削除されます。, 多くはまだ便利ですが、この記事ではそれらをカバーするつもりはありません。

リモートコンピュータの設定

PsExecをダウンロードしたら、実行するリモートコンピュータが開いていることを確認する必要があります。 PsExecには簡単な要件があり、ファイルとプリンタの共有が有効になり、admin$administrative共有が利用可能になります。

以下のように、すべてのリモートコンピュータに移動し、Windowsファイアウォールアプレットを開き、許可されたアプリに移動し、すべてのコンピュータでファイル,

ファイルとプリンタの共有は既知のセキュリティリスクであるため、プライベートファイアウォールプロファイルのみ

Windowsファイアウォールでのファイルと印刷の共有を許可する

または、各コンピュータにアクセスし、netshユーティリティを実行して開くことができます。

iv id=”9ef3f2d7c5″または、powershellのSet-NetFirewallRuleコマンドレットを使用して実行できます。,

PS51> Set-NetFirewallRule -DisplayGroup "File And Printer Sharing" -Enabled True -Profile Private

各コンピューターにアクセスしない場合は、PowerShellリモート処理が利用可能で、Active Directoryドメインにいる場合は、Invoke-Commandコマンドレットを使用して、多くのコンピューターでファイアウォールを一度に開くこともできます。

PsExecを使用して

実行する前に、歩く必要があります。 あなたが前にPsExecを使用したことがない場合は、治療のためにしています! この記事の後半で深い端にジャンプする前に、基礎を学ぶためにあなたの足を濡らすために最初にこのセクションを読んでください。,

新しいシステムでPsExecを初めて実行すると、すぐにPsExecライセンス契約が表示されます。 使用を開始するには、同意するボタンをクリックする必要があります。

PSExecライセンス契約(EULA)

ライセンス契約が表示されないようにするには、/accepteula以下に示すようにスイッチします。,

> psexec /accepteula

このEULAポップアップをローカルコンピューターとリモートコンピューターでサイレンシングする方法については、記事の後半で説明します。

ヘルプの検索

PsExecを探索するときは、スイッチをまったく使用しないでください。 単にスイッチなしでpsexecを実行すると、すべてのオプションとそれぞれが何をするかの簡単な説明が返されます。 すべてのオプションは、あなたの便宜のために以下の表にあります。,

スイッチ 説明
-a アプリケーションがコンマで実行できる別々のプロセッサで、1は最小の番号のcpuです。 たとえば、CPU2およびCPU4でアプリケーションを実行するには、次のように入力します。”-a2,4″
-c 指定したプログラムをリモートシステムにコピーして実行 このオプショ,
-d プロセスが終了するのを待たないでください(非対話型)。
-e 指定されたアカウントのプロファイルを読み込みません。
-f ファイルがリモートシステム上に既に存在する場合でも、指定されたプログラムをコピーします。
-i リモートシステム上の指定されたセッションのデスクトップと対話するようにプログラムを実行します。 ていない場合にセッションが指定された処理をコンソールです。 Windowsが理解できないため、-sスイッチを-iと一緒に常に使用して最良の結果を報告している人もいます。,
-h ターゲットシステムがVista以上の場合、proc
-l 制限付きユーザーとしてプロセスを実行します(Administratorsグループを削除し、Usersグループに割り当てられた Windows Vistaでは、プロセスは低い整合性で実行されます。
-n リモートコンピューターに接続するタイムアウトを秒単位で指定します。
-p ユーザー名にオプションのパスワードを指定します。 これを省略すると、隠しパスワードを入力するように求められます。,
-r 作成または対話するリモートサービスの名前を指定します。 とともに。
-s システムアカウントでリモートプロセスを実行します。
-u コンピュータにログインするためのオプションのユーザー名を指定します。
-v 指定されたファイルのバージョン番号がリモートシステムのバージョン番号よりも高い場合、またはリモートシステムのバージョン番号よりも新しい場合にのみコピーします。
-w プロセスの作業ディレクトリを設定します(相対
-x WINLOGONセキュアデスクトップにUIを表示します(ローカルシステムのみ)。,
-arm リモートコンピュータがARMアーキテクチャのものであることを指定します。
-priority -low、-belownormal、-abovenormal、-highまたは
-realtime 異なる優先度でプロセスを実行します。 使用
-バックグラウンド Vistaで低メモリとI/O優先度で実行します。
computer PsExecに、指定したコンピューターでアプリケーションを実行するよう指示します。, コンピュータ名を省略すると、PsExecはローカルシステム上でアプリケーションを実行し、ワイルドカード(\*)を指定すると、PsExecは
@file PsExecはファイルにリストされている各コ
-accepteula このフラグは、ライセンスダイアログの表示を抑制します。
-nobanner スタートアップバナーと著作権メッセージを表示しないでください。,

単純なリモートコマンドの実行

最も基本的なPsExecには、コンピュータ名と実行するコマンドの二つのパラメータが必要です。 hostnameのような引数を必要としないリモートコンピューターで実行するコマンドがある場合は、コンピューター名の後に追加するだけです。

完全なファイルパスを指定しない場合、実行するコマンドはユーザーパスまたはシステムパスにある必要があることに注意してください。, また、名前にスペースを含むプログラムがある場合は、いつでも”my application”などのスペースでプログラムを囲むことができます。exe”。

> psexec \\REMOTECOMPUTER hostname

CONTOSODC1コンピュータでhostnameコマンドを実行するには、次のコマンドを実行します。 その後、PSExecはリモートコンピュータに安全に接続し、コマンドを実行して出力を返します。 この場合、hostnameコマンドは、CONTOSODC1であるコンピュータのホスト名を返しました。,

コマンドがcmdまたは別のコンソールでない場合、PsExecはすぐにリモートセッションを終了し、リモートプロセスが返した終了コードを返します。

メモ:psexecから返されたエラーまたは終了コードは、PsExec自体からのものではありません。 代わりに、それはpsexecがリモートコンピュータ上で実行したコマンドから来ています。,

Successful psexec remote command execution

How PsExec Works on Remote Computers

PsExec goes through a few steps to execute programs on remote computers.

  1. Create a PSEXESVC.exe file in C:\Windows.
  2. Create and start a Windows service on the remote computer called PsExec.
  3. Execute the program under a parent process of psexesvc.exe.
  4. When complete, the PsExec Windows service will be stopped and removed.,

プロセスが100%正しく動作しない場合は、scコマンドを使用してサービスを手動で削除する必要があります。

単純なローカルコマンドの実行

PsExecはリモートコンピュータでコマンドを実行することで最もよく知られていますが、コマンドをローカルで実行することもできます。

以下のようなコンピュータ名を指定しないだけで、ローカルでコマンドを実行できます。

> psexec <local command or EXE file>

なぜこれを行うのですか? 一つの理由は、ローカルシステムアカウントとしてコマンドを実行す, あなたが使用することができます-sあなたは後で詳細について学ぶように、システムとしてローカルまたはリモートで任意のコマンド

以下の短いビデオを見てみましょう。 新しいコマンドセッションをNT AUTHORITY\SYSTEMとして起動するには、psexecのコマンドインタプリタ実行可能ファイルとともに-sスイッチを提供す,

システムとしてPsexecを実行しています

PsExecコマンド(より高度な取得)

基本を下げたら、より高度なテクニックを学び始めることができます。psexec. PsExecは、単一のコンピュータ上で単一のコマンドを実行するだけではありません。

複数のコンピュータでコマンドを実行する

PsExecは、一度に一つのリモートコンピュータでコマンドを実行するだけではありません。, このツールまたは支援をコピープログラム実行コマンドを複数のコンピュータです。

複数のコンピュータでPsExecを一度にいくつかの異なる方法で実行することができます。

コンマ区切りのコンピューター名

通常、単一のリモートコンピューターでコマンドを実行する場合は、\\REMOTECOMPUTERのように単一のコンピューター名を指定します。 を指定することもでき複数のコンピュータをカンマで区切られています。,

> psexec \\REMOTECOMPUTER1,REMOTECOMPUTER2,REMOTECOMPUTER3

Active Directoryドメイン内のすべてのコンピュータ

Active Directoryドメインに参加しているコンピュータでPsExecを実行していて、そのドメイン内のすべてのコンピュータでコマンド実行をブラストアウトしたい場合は、ワイルドカードを使用します。

PsExecはActive Directoryドメイン全体を検索し、すべてのコンピュータでコマンドを実行しようとします。 以下は、psexecが実行中のコンピュータが属するドメイン上のすべてのコンピュータに接続し、hostnameコマンドを実行する方法に関する構文例です。,

ローカルコンピューターがワークグループの一部である間にドメイン内のすべてのコンピューターを検索するためにアスタリスクを使用すると、エラーA system error has occurred: 6118が表示されることに注意してください。

ワイルドカードを使用すると、PsExecは基本的にコマンドnet view /allを実行して、最初にドメイン内のすべてのコンピュータを これは、NetBIOSへの依存のためにコンピュータ情報を見つける時代遅れの方法です。

ファイルからの読み込み

複数のコンピュータで一度にコマンドを実行できる別の方法は、テキストファイルを使用することです。, 構文@<filename.txt>を使用すると、PsExecはテキストファイル内のすべての行をコンピュータ名であるかのように読み取ります。 その後、各コンピュータを個別に処理します。

以下は、PowerShellを使用して行区切りのコンピュータ名のテキストファイルを作成し、それをpsexecの入力として使用する例を示しています。

PS51> (Get-AdComputer -Filter *).Name | Out-File computers.txtPS51> psexec @computers.txt hostname

ローカルプログラムをリモートコンピューターにコピーする

-cスイッチを使用すると、psexecは実行前にローカルプログラムをリモートコンピューターにコピーします。,

おそらく、あなたのローカルコンピュータ上のEXEを持っていますC:\Tools フォルダとリモートコンピュータ上で実行したいと思います。 これを行うには、次の構文を使用します。

> psexec \\REMOTECOMPUTER -c C:\Tools\program.exe

-cスイッチを使用して実行可能ファイルを指定しないと、PsExecはファイルをコピーしますが、system cannot find the file specified. これは、PsExecが常にコピーしたファイルを実行しようとするために発生します。,

PsExecを使用する前にリモートコンピューターにファイルをコピーする必要がある場合は、代わりにCopy-ItemPowerShellコマンドレットを使用します。

代替資格情報の下でリモートプロセスを実行する

PsExecのもう一つの一般的なユースケースは、代替アカウントの下でコマンドを実行することです。 デフォルトでは、PsExecは現在ログインしているアカウントでリモートコンピュータへの接続を試みます。 具体的には、リモートコンピューター上のアカウントになりすまします。,

-uおよびオプションの-pスイッチを使用すると、別のユーザーアカウントでリモートコンピュータに接続できます。 PsExecは、ユーザー名とパスワードの両方を暗号化し、認証のためにリモートコンピュータに送信します。

たとえば、ワークグループにいる場合は、リモートコンピューターに対して認証するユーザー名を常に指定する必要があります。

> psexec \\REMOTECOMPUTER hostname -u localadmin -p $$word

両方のコンピュータがActive Directoryのメンバーである場合は、ユーザーアカウントの前にドメイン名を付けてください。,

> psexec \\REMOTECOMPUTER hostname -u contoso.local\domainadmin -p $$word

-uスイッチを使用しない場合、psexecはリモートコンピュータ上のログインアカウントを偽装します。 ネットワークリソースにはアクセスできません。

ローカルシステムアカウントとしてプロセスを実行する

代替アカウントでPsExecを実行する最も便利な機能の一つは、-sスイッチ このスイッチでPsExec(ご遠隔で実行プリケーション)の下でのリモート(地方)のコンピュータのシステム。,

以下にリモートコンピュータ名を含めなかったことに注意してください。 PsExecは、同様に喜んでローカルコンピュータ上で実行されます。 この例では、-sオプションを使用して、PsExecにローカルシステムアカウントとしてローカルコマンドプロンプトを起動するように指示し,

ローカルシステムとしてpsexecを実行する

リモートコンピュータ上でローカルシステムとしてコマンドプロンプトを実行するには、以下のようにコンピュータ名をリファレンスに追加します。

> psexec -s \\REMOTECOMPUTER cmd

guiアプリケーションをリモートで起動する

もう一つの便利なpsexecスイッチは-iです。 デフォルトでは、PsExecできないた遠隔実行コマンドにおいて当サウナ、スチームルーム、リモートコンピュータ., これは、リモートでコマンドを実行している場合、とにかく画面が表示されないために役立ちます。

もうまく必要性があるプログラムを豊かにするために利用できます す個人的な使用にもエンドユーザます。 その場合は、-iスイッチを使用します。

リモートコンピュータにメモ帳ウィンドウを表示する必要があるかもしれません。 問題じゃない メモ帳を実行します。-iスイッチを持つexeとPsExecはメモ帳を開きます。,

> psexec -i \\REMOTECOMPUTER notepad
対話モードでpsexecを実行している

-dインタラクティブウィンドウが表示されたときに切断に切り替えます。 デフォルトでは、PsExecは実行されたプロセスが完了するのを待ちます。 リモートプロセス(この場合はメモ帳)が実行され続けている場合、PsExecは制御を返しません。,

-dスイッチを-iで使用すると、PsExecにリモートプロセスが終了するのを待たないように指示します。 代わりに、リモートプロセスが実行されるとすぐに切断され、制御が返されます。

出力のリダイレクト

Psexecは、リモートプロセスからローカルセッションに送信された出力に依存します。 通常、この出力はローカルコンソールに直接送信されます。 がついにリダイレクトできるので利用の典型的なリダイレクト。,たとえば、コマンドを実行してすべての出力を無音にしたい場合は、^> nul ^2^&1を使用して出力とエラーをnullにリダイレクトできます。

特殊文字は帽子でエスケープされます。 (^)。

PsExecユースケース

psexecの使い方を学んだら、必然的にさまざまな特定のユースケースに遭遇します。 このセクションでは、psexecを使用した実際のユースケースと例をいくつか学びます。,

リモートコマンドプロンプトの起動(psexec cmd)

最も一般的なユースケースの一つは、対話型コマンドプロンプトとしてPsExecを起動することです。 PsExecな実行コマンドを離れた また、コマンド出力をコンソールに戻すこともできます。 このため、優れたtelnet(誰かがまだそれを使用している場合)またはおそらくPowerShellEnter-PSSession置き換えを行うことができます。

起動リモートコマンドを指定し、リモートコンピューター名とcmdを実行します。 CmdはWindowsコマンドインタプリタです。, PsExecは対話型の使用をサポートしているため、点滅するカーソルとプロンプトを喜んで返します。

> psexec \\REMOTEPC cmd
リモートコンピュータでコマンドプロンプトを開く

この時点で、世界はあなたの牡蠣です。 に実行できるコマンドをpcにこの”入れ子”コマンドプロンプトで実行されるリモートコンピュータ.

コマンドプロンプトを終了するには、exitと入力します。, PsExecは、リモートコンピューター上のcmdプロセスを停止し、ローカルコンピューターにフォーカスを返します。

対話式cmdセッションを終了するには、Ctrl-Cを使用しないでください。 常にexitを使用してください。 Ctrl-Cを使用すると、psexecセッションはリモートコンピューター上で実行されたままになります。

ソフトウェアをリモートでインストールする

PsExecを貧しい人のソフトウェア展開ツールとして使用できます。 そしてMSIインストーラることを実行する必要がありますただく必要がありますリモートコンピュータという設定します。三井住友, このインストーラは、リモートコンピュータにコピーし、msiexecで実行する必要があります。exe有数のスイッチ。

以下は、PsExecを使用してソフトウェアをリモートで展開する方法の例です。 この例はsetupをコピーします。msiのリモートコンピュータその後、MSIインストーラーを対話的として、システム。

> psexec.exe \\REMOTECOMPUTER –i –s "msiexec.exe /i setup.msi" -c setup.msi

/accepteulaスイッチなしでEULAを受け入れる

前述したように、PsExecが初めて実行されるときは、EULAを受け入れる必要があります。, あなたは/accepteulaスイッチを使うことができますが、レジストリでそれを”ステージング”することもできます。

初めて起動すると、PsExecはHKCU\Software\Sysinternals\PsExecにレジストリキーを作成します。 そのレジストリキーの代わりに、Dword値1のEulaAcceptedというレジストリ値が作成されます。

お気に入りの方法を使用して、リモートコンピュータ上のレジストリを変更するには、PsExecを実行するコンピュータ上でこのキー/値を作成するだけです。 一度作成すると、実行する必要はありません/accepteula!,

PowerShellとPsExecの結婚

PowerShellの前に、私たちが持っていたのはPsExecだけでした。 今、我々はオプションがあります。 PowerShellの交換が可能でPsExec多くの場面で補完す。

PowerShellを使用したコンピューター名の構築

\\*ドメイン内のすべてのコンピューターを検索するには、代わりにPowerShellを使用できます。 PowerShellを使用すると、特定のコンピューターを選択するだけでなく、ファイアウォールが発生しやすいnet view /all動作を使用する必要はありません。,

PowerShellを使用して、コンマで区切られたすべてのコンピュータ名を含む文字列を作成できます。 その文字列をPsExecに渡すと、それぞれを手動で入力したようにそれぞれを楽しく処理できます。

ActiveDirectory PowerShellモジュールのGet-AdComputerコマンドレット部分の使用例を以下に示します。

PS51> psexec "\\$((Get-AdComputer -Filter *).Name -join ',')" hostname

PowerShellリモート処理をリモートで有効にする

リモートコンピュータがある場合は、Psexecの代わりにPowerShellリモート処理を使用したい場合は、PsExecを使用してそれらを有効にすることができます。,

Enable-PSRemotingまたはwinrmを実行してください。cmdバッチファイルのリモートコンピュータを素早く作成できonユリモ多数のコンピュータです。

以下に、winrmの呼び出し例を示します。システムアカウントとして実行されているリモートコ そのコマンドからの出力は必要ないので、2>&1> $null沈黙します。

$computerName = 'REMOTECOMPUTER'psexec "\\$Computername" -s c:\windows\system32\winrm.cmd quickconfig -quiet 2&>&1> $null 

PsExecエラーメッセージ

PsExecから返されるほとんどのエラーコードは、PsExecからではなく、リモートプロセスからのものであることを前もって言及する価値があります。, しかし、これらのエラーコードとそれらが何を意味するかを理解することは役に立ちます。

すべてのWindowsエラーコードを参照したい場合は、Windowsエラーコードのこの網羅的なリストをチェックアウトすることをお勧めします。

以下は、PsExecによって返される一般的なエラーコードのリストです。

エラーコード 説明
-2146232576 通常、エラーが発生したときにwindows updateによって返されます。,
0 コマンドが正常に実行されました
1 正しくありません。 問題が起こった。 それはそれについてです。
1603 インストール中に致命的なエラーが発生しました。 これは通常msiexecによって返されます。
2 システムは指定されたファイルを見つけることができません
4 システムはファイルを開くことができません。
5 アクセスが拒否されました。
6 ハンドルが無効です。,
6118 このワークグループのサーバーのリストは現在利用できません

あなたのフィードバック