PsToolsを使用してコマンドラインから他のPcを制御する

SysInternalsをカバーするGeek Schoolシリーズの今日のレッスンでは、PsToolsセットのユーティリティを使用して、ローカルおよびリモートコンピューターの両方であらゆる種類の管理タスクを実行する方法を示します。,

あなたが今まで別のコンピュータに接続し、コマンドを実行したい場合は、すぐに実行中のプロセスに関する情報を取得し、必要に応じてそれらを殺す、あるいは別のPC上でサービスを停止することができます。

明らかにあなたは、任意のWindowsコンピュータに接続し、実際にデスクトップを見て、あなたがローカルで行うだろう何かを行うには、リモートデスクトップまたは同様のサービスを使用することができますが、PsToolsユーティリテ,

これらは、企業環境で最もよく動作するユーティリティのタイプであり、これらのツールをマスターすることは間違いなく、あなたのシステム管理の仕事 より賢く、より速く物事を行うことは、偉大なsysadminであるための重要なスキルです。そのうちのいくつかは非常に便利ですが、他のものはより最近のバージョンのWindowsに組み込まれたツールに取って代わられており、ほとんどの人にとって, 私たちはそれらのすべてを調べて、それらがどのように機能し、なぜそれぞれを使用したいのかを理解します。,entコマンドラインでログオンします

  • PsPasswd–ユーザーのパスワードを変更します
  • PsPing–いくつかの追加機能を備えたかなり単純なpingユーティリティ
  • PsService–listとWindowsサービスに変更を加えます
  • PsShutdown–コンピュータをシャットダウン、ログオフ、または中断します
  • PsSuspend–プロセスを中断して再開します(それらを殺すのではなく)
  • Psexecのようなツールを使用して、リモートコンピュータ上であらゆる種類のコマンドラインユーティリティを実行できることは注目に値します…Autorunsコマンドラインツールなどの本当に便利なものを含みます。, PsToolsのパワーを受け入れれば、可能性は無限です。

    これらのツールはすべてローカルコンピューターで使用できますが、リモートコンピューターに接続してコマンドを実行するのに主に役立ちます。

    リモートコンピュータへの接続(すべてのユーティリティの構文)

    すべてのユーティリティはローカルコンピュータまたはリモートコンピュータで実行できるため、必要に応じてコンピュータ名に同じ最初の引数を持ちます。 代わりにIPアドレスを使用できることに注意してください。, この引数を省略すると、コマンドはローカルコンピューター上で動作します。

    psinfo\\computername

    psinfo\\computer1、computer2、computer3のような複数のコンピュータをリストすることもできますし、すべての名前をファイルに入れてpsinfo@computerlistのようなテキスト 最後の構文はpsinfo\\*で、ドメイン内のすべてのコンピュータで動作します。,

    ローカルコンピューターのアカウントのユーザー名とパスワードが他のコンピューターとは異なるため、代替資格情報で接続する必要がある場合は、-uおよび-pオプションを使用できますが、セキュリティ上の理由から、コマンドラインで-pをパスワード付きで使用したくない場合があることに注意してください。 更新:PsExecの最新リリースでは、パスワードをクリアテキストとして渡すツールはもうないので、誰かがあなたのスクリプトファイルを読んでそこにパスワード,

    psinfo\\computername-u”user”-p”Password”

    ドメイン環境にいて、現在実行中のユーザーから変更する必要がある場合、コマンドの”user”部分は”DOMAIN\user”に変わります。

    注:通常、管理者アカウントを使用してリモートコンピュータに接続する必要があります。

    リモート管理アクセスの設定

    PsToolsを使用する必要があるほとんどの人がドメイン環境にいる場合は、このセクションを完全に無視することができますすべてがうまく動作するはずです。, 家庭環境でWindows7、8、またはVistaを実行している人、またはドメインのないオフィスでいくつかのコンピュータを使用している人は、PsToolsを適切に実行できる

    この問題はMicrosoftによってよく説明されています。

    ターゲットリモートコンピューターのローカルadministratorsグループのメンバーであるユーザーがnet use*\\remotecomputer\Share$コマンドを使用してリモート管理接続を確立すると、完全な管理者として接続されません。, ユーザーはリモートコンピューター上で昇格の可能性がなく、管理タスクを実行できません。

    別の方法で説明するために、別のコンピュータに接続して管理者アクセスが必要なものを実行しようとすると、UACプロンプトをトリガーしてコンピュータから受け入れる方法がないため、管理者として接続されません。

    これは悪いことではありません。, マルウェアにはローカルのユーザー名とパスワードがあり、そのパスワードは他のコンピュータと同じであり、マルウェアはそれほど難しいものではありませんが、それでも軽く取られるべきものではありません。

    また、ドメイン環境にいる場合、この問題は存在せず、変更する必要はありません。 また、たくさんの仮想マシンでテストするだけであれば、心配する必要はありません。,P>

    UACを調整してPsToolsを実行できるようにするには、レジストリエディタを開き、次のキーに移動します。

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
    Windows\CurrentVersion\Policies\System

    そこにいたら、右側に新しい32ビットDWORDを作成し、LocalAccountTokenFilterPolicyという名前と1の値を付けます。 設定を有効にするためにコンピュータを再起動する必要はありません。,

    注:明確にするために、この設定は接続しているリモートコンピュータで行う必要があります。

    PsExec

    PsExecは、リモートコンピュータで実行するのと同じように、ローカルコマンドプロンプトで任意のコマンドを実行できるため、おそらく これには、コマンドラインで実行できるものが含まれます—レジストリ値を変更したり、スクリプトとユーティリティを実行したり、そのPCから別のPCに, コマンドの出力は、リモートPCではなく、ローカルPCに表示されます。

    構文は簡単です:

    psexec\\computername<オプション>apptorun。exe<引数>

    ただし、現実的には、コマンドラインにユーザー名とパスワードも含めることをお勧めします。, たとえば、別のPCに接続してネットワーク接続リストを確認するには、次のようにします。

    psexec\\computername-u User-p Password ipconfig

    このコマンドは、次のような出力を生成します。

    コマンドの出力を別のコマンドに渡したい場合、または出力をファイルにリダイレクトしたい場合は、通常はcommandのようなことを行います。exe>出力。txt、そしてPsExecでも同じことが起こります。, したがって、次のようなコマンドは、netstat-anの出力をローカルコンピュータのルートディレクトリのファイルに保存します。

    psexec\\コンピュータ名netstat-an>C:\connections—–txt

    PsExec接続を介してリモートコンピュータに>または|文字を渡す場合は、windowsコマンドシェルではあまり知られていないエスケープ文字である^文字を使用する必要があります。, つまり、もちろん、実際にはリモートコンピュータ上でコマンドシェルを使用し、プロセスを実行するだけでなく、リダイレクトまたはパイプを最初に行う必要があることを意味します。 うちのコマンドはこのような形になります。(変更の場合はホームディレクトリが書き込みアクセス).

    psexec\\コンピュータ名cmd/c netstat-an^>C:\users\geek\connections—–,txt

    この例では、netstatによって生成された開いている接続のリストを、connectionsという名前のファイル内のリモートコンピューター上のユーザーのホームディレテキスト

    リモートPCへのプログラムのコピー

    PsExecを使用するときは、リモートPC上のアプリケーションだけに限定されず、実際にはローカルで持っているもの たとえば、リモートシステムのAutorunsコマンドラインスキャンを実行したいが、autorunscのみがあった場合。exeローカルコンピュータでは、-cスイッチを使用してアプリケーションをコピーできます。, PsExecは、コマンドが終了すると、リモートシステムからツールを削除します。

    これは、ほとんどのSysInternalsツールの-accepteulaオプションについて言及する重要な時期であり、コマンドが実行されたコンピュータでEULAが受け入れられたことを確 これをautorunscに追加する必要があります。exeコマン

    psexec\\computername-c autorunsc.,exe-accepteula

    アプリケーションを常にコピーするか、ローカルアプリケーションがリモートアプリケーションよりも上位のバージョンの場合にコピーするかを指定するオプションがいくつかあります。 できるだけ実行psexecから行います。注:コマンドがコマンドプロンプトでのみ使用できる場合は、その前にcmd/cを追加する必要があります。 これには、|や>ようなパイプとリダイレクトが含まれます。,

    リモートPC上のログオンユーザーとの対話

    -iスイッチを使用して、アプリケーションを起動し、リモートユーザーが実際にアプリケーションと対話できるように PsExecが制御を返す前に、リモートプロセスが終了するのを待たない-dスイッチと組み合わせることをおそらくお勧めします。, たとえば、このコマンドはリモートコンピュータ上でメモ帳ウィンドウを開きます。

    psexec\\computername-d-i notepad

    -sオプションを指定してシステムユーザーとして実行することもできます。 たとえば、自分のコンピュータでレジストリエディタを開きたいが、システムユーザーレベルの権限を持つ場合は、このコマンドを実行できます。

    psexec-i-d-s regedit.,exe

    あなたが疑問に思っている場合は、はい、これはあなたが通常レジストリで編集するアクセス権を持っていない多くのものにアクセスできるようになります。 そして、はい、それは本当に悪い考えです。

    PsExecを介して完全なコマンドプロンプトを実行する

    はい、PsExecを介して単一のコマンドを実行する方法のすべての例を示しました…そして、実際にリモートコンピュータ上で実行されているローカルコンピュータ上で完全なシェルを実行できることがわかりました。 それはあなたがそのサーバーのコンソールにいたようなものです(ほとんどの場合)。, そして幸いなことに、この構文は本当に簡単です(必要に応じてユーザー名を追加してください)。

    psexec\\コンピュータ名cmd.exe

    これを行うと、リモートPCで実行されているコマンドプロンプトが表示されます。

    コマンドプロンプトは、タブ補完がまったく動作しないことを除いて、ほぼ通常のように動作しますが、それは私たちにとって,

    PowerShellコマンドを別のコンピュータでリモートで実行したい場合は、構成をいくつか調整してネイティブに実行できることに注意してください。 残念ながら、価値のない奇妙な回避策をたくさん使用しない限り、PowerShellはPsExecでうまく動作しません。

    その他のオプション

    psexecコマンドには、使用できる他の本当に便利なオプションがたくさんあります—これらの各オプションは、\\computernameの直後のスペースで、他のコマンドの前で使用されます。, したがって、psexec\\computername-option<リモートコマンド>と思います。

    追加のスイッチなしでプロンプトからpsexecコマンドを実行するだけで、それらのすべてが表示されます。

    PsFile

    このコマンドは、ローカルPCまたはリモートPC上のネットワーク経由で現在開かれているファイルを表示し、Windowsの”net file”コマンドと同様に動作 構文は、キット内の他のコマンドと同じです。

    psfile\\computername

    ええ、これは最後のものほど楽しいものではありません。,

    いずれかのファイルを閉じてユーザーをリソースから切断する場合は、-cオプションを使用して接続を閉じることができますが、ファイルが正しく閉じられなかったため、データが失われる可能性があります。

    psfile\\computername<path>-c

    PsGetSid

    これは、コンピュータまたはユーザーのセキュリティ識別子を表示し、標準の引数を取ります。, このユーティリティは、おそらく私たちが個人的に遭遇していない非常に特定のシナリオでのみ有用です。 だから一度それを試してみて、いつかそれを使用する必要があるまでそれを忘れる。

    PsInfo

    このコマンドは、稼働時間を含むシステムに関する多くの有用な情報をリストします。 SysInternalsツールがパスにあると仮定して、コマンドプロンプトでpsinfoと入力するだけで、これをローカルで実行してテストできます。,

    PsInfoからもっと多くの情報を取得したい場合は、次のスイッチを使用してディスク情報(-d)と修正プログラム(-h)、インストールされているアプリケーションとそのバージョン(-s)のリストを追加できます。,

    psinfo-d-h-s

    これにより、ほぼ空白の仮想マシンでも、より多くの情報が得られます。

    コンピュータ名とユーザー名スイッチを追加することで、PsInfoをリモートで実行することもできますが、ユーザー名スイッチを追加することで、PsInfoをリモートで実行することもできます…しかし、ユーザー名スイッチを追加することで、PsInfoをリモートで実行することもできます。一つの大きな問題:リモートレジストリサービスが有効になっていない限り、それ 私たちは、リモートコンピュータ上でそれを有効にする方法について話す記事の最後に向かいます。,

    PsKill

    このコマンドは本当に簡単です—名前またはIDのいずれかでプロセスを強制終了し、-tスイッチを使用してオプションでプロセスツリー

    pskill\\computername<PIDまたは名前>

    PsKillの問題は、最新バージョンのWindowsには非常に強力なタスクキリングユーティリティがより多くの機能。,

    PsList

    このユーティリティは非常にシンプルですが、すぐにコンピュータを見て、何かがあまりにも多くのCPUやメモリを使用しているかどうかを コマンドラインで名前または名前の一部を指定して、問題のあるアプリケーションだけにリストを絞り込むことができ、スレッドを含むほぼすべて

    注:このユーティリティをリモートコンピュータで動作させるには、リモートレジストリサービスを有効にする必要があります。 後でそれに対処する方法を説明しているので、レッスンの最後まで読んでください。,

    PsLoggedOn

    このユーティリティは、マシン上でログオンしているか、リモートで接続しているアカウントを一覧表示します。 これは非常にシンプルで、システム管理者タイプの環境では主に便利です。

    PsLogList

    このユーティリティは、コマンドラインにローカルまたはリモートのイベントログを表示します。,

    psloglist\\computer System

    -h、-d、および-mオプションもあり、イベントのリストを最後のx時間、日、または分だけに絞り込むことができます。 -Nオプションはxレコードのリストを表示しますが、-rスイッチは順序を逆にして、最新のレコードが出力の下部に表示されるようにします。 この例では”System”に設定した最後のオプションは、実際には必要ありません—省略すると、システムログは常にプルされますが、代わりにApplicationまたはSecurityに変更して、それらのログをプルすることができます。,

    他のコンピュータへの管理者アクセス権がある場合は、イベントビューアを開き、アクションメニューから接続を選択するだけです。 リストにコンピューター名を入力し、必要に応じて資格情報を変更し、その方法でイベントログにアクセスします。

    PsLogListが本当に便利であることがわかる唯一のシナリオは、イベントログに特定のメッセージがある場合にアクションを実行するために何かをスクリプト化したい場合です。,

    PsPasswd

    このユーティリティを使用すると、ローカルおよびリモートの両方のユーザーのパスワードを変更できます。 構文は他のすべてと同じです:

    pspasswd\\computer-u User-p Password<AccountToChange><NewPassword>

    通常のコマンドプロンプトからnet userを使用するだけで、このユーティリティの利点は、複数のコンピューターのパスワードを一度に変更でき、ドメ,

    PsPing

    このユーティリティは、ping、ポートのチェック、およびレイテンシと帯域幅のテストを行います。 かなりシンプルだ,

    psping<サーバー名>

    または、次のようにポート番号を追加することで、ポートへの接続を確認できます。

    psping<servername>:80

    このコマンドには、ネットワークのトラブルシューティングを行うために必要な高度なオプションがたくさんあります。,

    PsService

    このユーティリティを使用すると、コマンドプロンプトからWindowsサービスを処理できます。 それは本当に非常に使いやすいです—構文は次のように動作します:

    psservice\\computername<コマンド><引数>

    コマンドのリストは、ヘルプ/を見て見つけることができますか? オプションがいくつかのオプションを見つけることができます自分自身を以ついてご覧いただけます。,restart–サービスを停止してから再起動します。

  • pause–サービスを一時停止します。
  • cont–一時停止したサービスを継続します。
  • depend–指定したサービスに依存するサービスを列挙します。
  • find–ネットワーク上のサービスのインスタンスを検索します。
  • find–ネットワーク上のサービスのインスタンスを検索します。
  • start–サービスを開始します。
  • start–サービスを開始します。
  • start-サービスを開始します。
  • start-サービスを開始します。
  • stop-サービスを停止します。特に、start|stop|pause|restart|contオプションは非常にシンプルでわかりやすいものです。, たとえば、次のコマンドでは、”start”を他のコマンドに置き換えることができます。

    psservice\\computername start<servicename>

    他のオプションを使用して、サービスに関する詳細情報を照会したり、構成を変更したりできます。

    注:組み込みのsc。エグゼ明ントする場合にのみ有用なものですと重複することです。 主な違いは、PsServiceがもう少しユーザーフレンドリーであることです。,

    PsShutdown

    このユーティリティを使用すると、コンピュータをシャットダウン、ログオフ、またはスリープモードにすることができます。 問題は、組み込みのシャットダウンよりも優れていないということです。exeユーティリ

    PsShutdownが提供する一つのオプションは、コンピュータをスリープモードにするためのスイッチ(-d)です。,

    psshutdown\\computername-d

    代わりに-hオプションを使用してコンピュータを休止状態モードにすることもできます。

    PsSuspend

    このユーティリティはPsKillと非常によく似ていますが、組み込みのTaskkillユーティリティではできないことを行います。sysadminタスクを完了している間にCPUを消費するプロセスの実行を一時的に停止したい場合に非常に便利です。,

    プロセスを中断するのは非常に簡単です:

    pssuspend\\computer<PIDまたは名前>

    そのプロセスを再開するのは簡単です—あなたがしなければならないすべて-rスイッチを追加します。,

    pssuspend\\computer-r<PIDまたは名前>

    ユーティリティがリモートレジストリのために接続しません

    psinfo、pslist、psloglist、psloggedonなど、これらのユーティリティの一部は、リモートコンピューターでリモートレジストリサービスを有効にする必要があり、最新のバージョンのwindowsではデフォルトで有効になっていません。

    良いニュースは、この問題は簡単に修正可能であり、リモートレジストリを有効にしたままにする必要がないということです。, PsServiceを使用してこのコマンドを実行してサービスを開始するだけです。

    psservice\\computername start RemoteRegistry

    PsInfoまたはPsListで行っていることが終わったら、次のコマンドを使用してサービスを再び停止できます。

    psservice\\computername stop remoteregistry

    シンプルなソリューションは最高ですね?

    次のレッスン

    ファイルとディスクのユーティリティ、およびいくつかのより興味深いものをカバーするとき、明日私たちに参加してください。

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です