Windows 上でリモート コマンドを実行します。

09.08.2018

テクニカルプレビュー Telnet などのユーティリティや、Symantec の PC Anywhere などのリモート管理プログラムを使用すると、リモート システム上でプログラムを実行できますが、クライアントもインストールする必要があるため、インストールは簡単ではありません。ソフトウェア アクセスする必要があるリモート システム上で。 PsExec は Telnet の軽量バージョンです。 これにより、対話型インターフェイスのすべての機能を使用して、リモート システム上でプロセスを実行できます。コンソールアプリケーション

クライアント ソフトウェアを手動でインストールする必要はありません。 PsExec の主な利点は、リモート システム上のコマンド ライン インターフェイスを対話的に呼び出し、IpConfig などのツールをリモートで実行できることです。 これは、リモート システムに関するデータをローカル コンピュータの画面に表示する唯一の方法です。

インストーラーインターフェイスを使用したサービスの監視

管理するリモート コンピューターにログインします。 サービスがインストールされ、実行されるまで待ちます。 構成パネルに移動し、「管理ツール」を選択して、サービス・インターフェースを起動するだけです。 これらのオプションにはエキスパート パネルからアクセスできます。

ユーザーの認証に使用できる公開キーを含むファイルを指定します。 通話応答チェックが許可されるかどうかを示します。 リモート ホストがポートへの接続を許可するかどうかを指定します。 クライアントに送信されました。 これにより、他のリモート ホストが転送されたポートに接続できなくなります。 以下の形式が使用できます。 デフォルトでは、すべてのローカル アドレスをリッスンします。 ユーザーに時間がない場合、この時間が経過するとサーバーがシャットダウンします。 ログインしていません。

注記。 一部のウイルス スキャナは、これらのプログラムの 1 つ以上が「リモート管理」ウイルスに感染していると報告します。 PsTools スイートに含まれるプログラムにはウイルスは含まれていませんが、ウイルスによって使用されているため、これらの警告が表示されます。

インストール

値が 0 の場合、時間制限はありません。 許可される認証試行の最大数を指定します。 接続のために。 故障率が半分に達すると。 値を超えると、追加の障害がログに記録されます。 パスワード認証を許可するかどうかを示します。

このタイプのいくつかのバリエーションが許可されています。 認証が許可されるかどうかを示します 公開鍵。 この設定はプロトコルごとに適用されることに注意してください。 バージョン 2 のみ。このオプションはプロトコル バージョン 1 にのみ適用されます。初心者はランダムである場合があるため、通常はこれが望ましいです。

PsExec が動作する環境 オペレーティングシステム Windows Vista、NT 4.0、Win2000、Windows XP、および Server 2003 (64 ビット OS バージョンを含む)

使用法

Windows IT Pro マガジン 2004 年 7 月号の Mark Russinovich による記事では、このプログラムを使用するための追加の方法が説明されています。 PsExec.

使用法: psexec [\\コンピュータ[,コンピュータ2[,...] | @file][-u ユーザー [-p パスワード]][-ns s][-l][-s|-e][-x][-i [セッション]][-c [-f|-v]] [-w ディレクトリ][-d][-<приоритет>][-a n,n,... ] プログラム [引数]

ディレクトリやファイルを世界中に公開しておきましょう。 外部サブシステムを構成します。 引数は、サブシステムの名前と実行するコマンドである必要があります。 サブシステムの要求に応じて。 デフォルトでは、サブシステムは定義されていません。 この設定はプロトコルのバージョンにのみ適用されることに注意してください。

コンピュータに関する情報の取得

引数は「はい」または「いいえ」でなければなりません。 さらに、認証と認証データの認証の検証。 置換はクライアント側で発生します。 システム管理者不用意にリクエストすることで攻撃にさらされる可能性のあるクライアントを保護したいという立場にある可能性があります。

システムとネットワークの監視

できるよ さまざまな方法で使用するクライアント プログラムによって異なります。 ほとんどの場合、これらのコマンド ライン スイッチはプログラムのドキュメントに記載されています。

コンピューター

指定したコンピューター上でアプリケーションを実行するように PsExec に指示します。 コンピューター名が指定されていない場合、PsExec はアプリケーションを次の場所で起動します。 ローカルシステム、コンピューター名の代わりにアスタリスク文字 (\\*) が指定されている場合、PsExec プログラムは現在のドメインのすべてのコンピューターでアプリケーションを起動します。

さまざまな構成オプションへのアクセス

セッションを識別する番号を指定します。 品質レベル 0 は、画質は悪いが圧縮率は非常に優れていることを意味し、レベル 9 は非常に優れた圧縮率を提供します。 良質圧縮率の低い画像。 これを行うには、次のいずれかのサイトにアクセスします。

リモート ホストからユーザーにアクセスを許可するには、次の手順に従います。 このステートメントは完全ではなく、一部の要素の変更が必要であることを確認してください。 リモート ユーザーを設定するときは、次の点を考慮してください。 両方のユーザーに同じ権限を持たせたい場合は、権限を複製する必要があります。 残りの 3 つのキーは、表示されているようには表示されませんが、使用できます。表示されている 2 つのハイブのさまざまなサブセクションに含まれています。 その方法は次のとおりです。 接続するコンピューターでコントロール パネルを開きます。 ある日。 ローカルユーザーリモート ユーザーとは異なります。 。 接続に使用するユーザー資格情報は、リモート コンピューターの Administrators グループのメンバーである必要があります。

@ファイル

指定されたリストにリストされているすべてのコンピューターでアプリケーションを実行するように PsExec に指示します。 テキストファイル.

アプリケーションを実行できるプロセッサはカンマで区切られ、プロセッサには 1 から始まる番号が付けられます。たとえば、アプリケーションをプロセッサ 2 と 4 で実行するには、「-a 2,4」と入力します。

リモート コンピューター上でタスクを管理または作成する

コンソール ツリーでタスク スケジューラ ノードが選択されていることを確認します。 「アクション」領域で、「別のコンピュータに接続」をクリックします。 [コンピュータの選択] ダイアログ ボックスが開きます。 [コンピュータの選択] ダイアログ ボックスで、[他のコンピュータ] ラジオ ボタンを選択します。

現在のユーザーの資格情報とは異なる資格情報を使用してリモート コンピューターに接続できます。 「別のユーザーアカウントに接続する」チェックボックスをチェックし、「ユーザーを設定」ボタンをクリックします。 使用する認証情報のユーザー名とパスワードを入力します。

指定したプログラムがコピーされます リモートシステム実行のために。 このパラメータが指定されていない場合、アプリケーションはリモート システムのシステム フォルダに配置されている必要があります。

アプリケーションが完了するまで待つ必要がないことを示します。 このオプションは、非対話型アプリケーションを実行する場合にのみ使用してください。

指定されたアカウント プロファイルがロードされていません。

これでリモート コンピュータに接続されました。 リモート コンピュータでタスクをスケジュールするときと同じ手順を使用して、リモート コンピュータ上でタスクを作成および管理できます。 ローカルコンピュータ。 セクション内。 リモート コンピューター上でコマンド ラインを使用してタスクを管理または作成します。

コマンド プロンプトを開くには、[スタート] ボタンをクリックし、[すべてのプログラム]、[ツール]、および [コマンド プロンプト] を選択します。 コマンド プロンプトを開きます。 。 リモート コンピュータのローカル ネットワークにログインしなくても、リモート コンピュータの予期しない再起動またはシャットダウンの理由を文書化できます。 この機能を使用するには、リモート コンピュータでサービスを有効にする必要があります リモートレジストリ.

指定されたプログラムは、そのようなファイルがリモート システムにすでに存在している場合でも、リモート システムにコピーされます。

起動されたプログラムは、リモート システム上の指定されたセッションのデスクトップにアクセスします。 セッションが指定されていない場合、プロセスはコンソール セッションで実行されます。

プロセスが開始されると、ユーザーには制限付きの権限が付与されます (管理者グループの権限は上書きされ、ユーザーにはユーザー グループに割り当てられた権限のみが付与されます)。 Windows Vista では、プロセスは次のように開始されます。 低レベル信頼性。

管理者グループのメンバーシップ。 関連リンク コマンド プロンプトを使用する この手順を実行するには、ローカルの Administrators グループ、またはリモート コンピュータのリモート グループのメンバーである必要があります。 コマンド プロンプトからリモート コンピュータが予期せず再起動またはシャットダウンする理由を文書化するには [スタート] ボタンをクリックし、[プログラム]、[アクセサリ]、[コマンド プロンプト] の順に選択します。 有効な範囲は 0 ~ 600 で、デフォルトは 30 です。イベントをログに記録して情報を記録するには、リモート コンピュータ上でリモート レジストリ サービスが有効になっている必要があります。 とても使いにくそうです。

リモート コンピューターへの接続遅延を (秒単位で) 設定できます。

ユーザー名にオプションのパスワードを指定できます。 このパラメータを省略すると、パスワードの入力を求められ、画面にパスワードは表示されません。

リモート プロセスはシステム アカウントから起動されます。

リモート システムにログインするためのオプションのユーザー名を指定できます。

同様の状況でこれが必要になる場合があります。 彼らは皆、私の経由でインターネットに接続しています ホームネットワーク。 そのうち 3 つはケーブルでネットワークに常時接続されており、残りはケーブル経由で接続されています。 ワイヤレス接続。 デスクトップ コンピュータには 2 つの追加ドライブがあります。 合計金額 800 GB を超える追加ストレージ。 ご想像のとおり、12時から さまざまなコンピュータさまざまな時間にインターネットに接続すると、アーカイブまたはバックアップが必要なファイルが多数存在します。

これらのファイルは最初から存在しており、ラップトップのハード ドライブ上の多くのスペースを占有しています。 ご覧のように、 ハードドライブラップトップの 160 GB はすぐにいっぱいになってしまいます。 ホーム ネットワーク上のあるコンピュータから別のコンピュータにファイルを簡単に移動する方法が必要でした。 彼はまた、面倒で恐ろしい仕事を引き受け、それを簡素化しました。 2 台の信頼されたコンピューター間に安全な接続を確立します。 彼の中で 最も単純な形式ネットワーク上の別のコンピュータにログインし、シェル コマンドを使用してそのリモート コンピュータに移動できます。

指定されたファイルは、バージョン番号が高いか新しい場合にのみ、既存のファイルの代わりにリモート システムにコピーされます。

プロセスの作業ディレクトリ (リモート システム内のパス) を指定できます。

Winlogon デスクトップにユーザー インターフェイスを表示します (ローカル システムのみ)。

-優先度(優先度)

リモート コンピュータは次の場所にある場合があります。 ローカルネットワークまたは、このチュートリアルの最後でわかるように、彼は世界の反対側にいる可能性があります。 それだけではありません。 これを、リモート コンピュータへのログインに使用するユーザー名に置き換えます。

選択したユーザー アカウントは既に存在します。 接続が完了すると、アクセスするためのユーザー パスワードの入力を求められます。 これは、リモート コンピュータにログインしようとしているユーザーのユーザー パスワードです。

これからは完全にアクセスできるようになります コマンドラインリモート コンピュータにアクセスすると、コマンド ラインからローカル コンピュータ上のファイルを表示しているかのようにファイルを表示できるようになります。 実際、コマンド ラインのユーザー名が、リモート コンピューターにログインしているユーザー名に変更されていることがわかります。

プロセスにさまざまな優先順位を設定できます: -low (低)、-belownormal (平均以下)、-abovenormal (平均以上)、-high (高)、または -realtime (リアルタイム)。

プログラム

起動するプログラムの名前。

引数

渡される引数 (ファイル パスはターゲット システム上のローカル パスとして指定する必要があることに注意してください)。

心配しないでください、いつでも戻ってきます。 ログアウトするには、~ と書きます。 コマンドラインで。 これを正しく行うと、コマンド ラインに文字が表示されなくなります。 混乱した場合は、「Enter」を押して「空白」のコマンド ラインに戻り、もう一度試してください。 これを行うには、リモート コンピュータに再度ログインする必要があります。 コマンドラインに次のように入力します。

成功すると、リモート コンピュータを信頼できるコンピュータとして登録したときと同様に、アクセスするためのユーザー パスワードの入力を求められます。 パフォーマンスしたいのはイルカである必要はありません。 この間は、すでに転送できるはずだと思っていても、2 台のコンピュータ間でファイルを転送することはできません。 まず、コマンドラインによる方法を見てみましょう。

スペースを含むアプリケーション名を指定するには、psexec \\marklap "c:\longname\app.exe" のように引用符を使用します。 「Enter」キーを押すと、入力されたデータがリモート システムに転送されます。リモート プロセスを終了するには、Ctrl+C キーの組み合わせを押す必要があります。

ユーザー名が指定されていない場合、リモート プロセスは PsExec と同じアカウントから実行されます。 ただし、リモート プロセスは偽装されているため、アクセスできません。 ネットワークリソースリモートシステム。 ユーザー名が指定されている場合、リモート プロセスは指定されたアカウントで実行され、リモート システム上のそのアカウントと同じネットワーク リソースにアクセスできるようになります。 パスワードはクリア テキストでリモート システムに送信されることに注意してください。

これを、リモート マシン上で接続するディレクトリのパスと名前に直接置き換えます。 ニーズに合わせてパスとディレクトリ名を調整します。 指定したディレクトリを次のようにマウントできます。 ファイルシステム。 インストールして起動するとこんな感じになります。

「追加」ボタンをクリックし、コピーする各ファイルをダブルクリックします。 [ユーザー名] 列に、接続するユーザー名を入力します。 [ディレクトリ] フィールドは、ログイン後に接続するディレクトリです。 以前の情報を入力した場合は、「マウント ポイント」セクションの情報が自動的に入力されます。

PsExec は管理者権限を必要としないため、ローカル システムにアクセスする場合、Runas の代わりにこのバージョンの PsExec を使用できます。

このコマンドは、\\marklap システム上の対話型コマンド ライン インターフェイスを呼び出します。

psexec\\マークラップコマンド

このコマンドは、/all パラメーターを使用してリモート システム上で IpConfig プログラムを実行し、結果のデータをローカル システム画面に表示します。

最後に、ローカル マシンをファイル システムとしてリモート マシンにマウントするかどうかを確認します。 アクセスできるようになると、ローカル コンピューター上でファイル マネージャーが自動的に開き、指定されたディレクトリが開きます。 ファイルをリモート コンピュータに送信するには、ホスト コンピュータ上のファイルを右クリックし、コンテキスト メニューから [アップロード] を選択します。 選択したファイルがリモート コンピュータ上の選択したディレクトリにダウンロードされます。 同様に、リモートコンピュータからメインコンピュータにファイルを移動し、コピーしたいファイルを選択して右クリックし、「ダウンロード」を選択します。 コンテキストメニュー.

psexec \\marklap ipconfig /all

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

psexec \\marklap -c test.exe

このようなプログラムがリモート システムにすでにインストールされており、システム ディレクトリにない場合は、このプログラムへのフル パスを指定します。

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

このコマンドは、システム アカウントから Regedit を対話的に実行して、SAM および SECURITY レジストリ キーのデータを表示します。

選択したファイルは、リモート コンピュータからホスト コンピュータ上の選択したディレクトリにコピーされます。 左側の [新しいサイト] ボタンをクリックして、新しいサーバーの記録を開始します。 「全般」タブで、「ホスト」行にホスト名またはアドレスを入力します。

[ユーザー] フィールドにリモート コンピュータで使用するユーザー名を入力し、[パスワード] 行にユーザーのパスワードを入力します。 これは、物理的にリモート コンピュータの前に座ってログインするときに使用するのと同じパスワードです。

これをテストするために、Spruggie はイギリスのベッドフォードにある彼女のコンピューターで私のアカウントを開設しました。 これを実装するには、いくつかの「追加」手順が必要です。 次に、ファイアウォールまたはファイアウォールが組み込まれたルーターの内側にいる場合は、接続を確立するためにコンピューターのポート 22 を共有する必要があります。 市場にある何百もの異なるルーターのそれぞれに対してこれを行う方法を説明することは不可能です。 ルーターに付属のマニュアルまたはドキュメントを使用することをお勧めします。

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

このコマンドはプログラムを呼び出すために使用されます インターネットエクスプローラー制限された権限を持つユーザーに代わって:

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

PsExec は次のユーティリティです。 リモート実行チーム

リモート コンピューター上でコマンドを実行することは、非常に一般的なタスクです。 これは、システム設定の変更、プログラムのインストールまたは削除などに必要になる場合があります。 このような問題を解決するためのさまざまなツールが数多くあります。 ソフトウェアシステムタイプ システム センター 構成マネージャーそして最後は控えめなコマンドラインユーティリティで終わります。 この記事では、これらのユーティリティの 1 つについて説明します。

PsExec ユーティリティは、Sysinternals の PsTools パッケージの一部です。 コマンドを実行できるようになります リモートコンピュータシステムにインストールする必要はありません。 このユーティリティを使用するには、このユーティリティを実行可能ファイルのあるフォルダー (C:\Windows\system32 など) にコピーし、任意のコマンド ライン シェル (Cmd または PowerShell) から実行します。
プログラムの動作原理は次のとおりです。実行可能ファイル PsExec.exe のリソースには、別の実行可能ファイル PSEXESVC があります。 Windowsサービス。 コマンドを実行する前に、PsExec はこのリソースをリモート コンピューター Admin$ (C:\Windows) の隠し管理フォルダー内のファイル C:\Windows\system32\psexesvc.exe に解凍します。

注記。キーを使用している場合 -c何をコピーする必要があるかをプログラムに指示しました 実行可能ファイルこのシステムでは、これらもこのフォルダーにコピーされます。

コピーが完了すると、PsExec が API を使用してサービスをインストールし、開始します。 Windowsの機能サービスを管理するため。 次に、PSEXESVC を起動すると、PSEXESVC と PsExec の間に接続が確立され、データ転送 (コマンドの入力と結果の受信) が行われます。 完了すると、PsExec はサービスを停止し、ターゲット コンピューターから削除します。

PsExec の構文は次のとおりです。

psexec \\computer [-u ユーザー [-p パスワード]] プログラム [引数]

ユーザー名とパスワードを指定する必要はありません。その場合、リモート プロセスは PsExec プログラムと同じアカウントで起動されます。 ただし、リモート プロセスは偽装されるため、リモート システムのネットワーク リソースにアクセスできません。 ユーザー名を指定すると、リモート プロセスは指定されたアカウントで実行され、このアカウントと同じリモート システムのネットワーク リソースにアクセスできるようになります。 ただし、パスワードはクリア テキストでリモート システムに送信されることに注意してください。

例として、リモート コンピューター SRV1 の DNS キャッシュをクリアしてみましょう。

psexec\\SRV1 ipconfig /flushdns

コマンドは、資格情報を使用して SRV1 コンピューター上で実行されます。 ipconfig が完了すると、すべてのテキスト出力がコンピュータに送信され、さらにコマンドの実行コード (エラー コード) が返されます。 コマンドが正常に実行された場合、値は 0 になります。

複数のコマンドを実行する必要がある場合は、リモート コンピュータとの対話型セッションを確立することをお勧めします。 これを行うには、次のコマンドを入力します psexec\\SRV1 cmd。 これで、ローカル コンピュータで入力されたコマンドがリモート コンピュータ SRV1 で実行されるようになります。


PsExec を使用すると、複数のコンピューターでコマンドを同時に実行できます。 これを行うには、コンピューター名をカンマで区切って入力します。 psexec\\SRV1、SRV2または、テキスト ファイルに保存して、そのアドレスを指定します。 psexec @c:\comp.txt。 コンピューター名の代わりにアスタリスクを入力すると、次のようになります。 psexec\\*, その後、コマンドはドメイン内のすべてのコンピューターで実行されます。


PsExec ユーティリティを使用するもう 1 つの興味深い方法があります。 コンピューター名を指定しない場合、コマンドはデフォルトでローカル システム上で実行されます。 キーの使用 -s以下でプログラムを実行できます アカウントシステム。 たとえば、コマンド ライン セッションを開始してみましょう。 psexec -s cmdそしてコマンドを使用して おいおい現在どのユーザーの下で作業しているかを確認してみましょう。 この機能は、プログラムのデバッグや、非表示のレジストリ キー SAM および SECURITY へのアクセスに役立ちます。


さて、プログラム キーについて少し説明します。 すべてを説明するつもりはありませんが、最も興味深いものについて説明します。

指定されたプログラムは、実行のためにリモート システムにコピーされます。 例えば:

psexec \\SRV1 -c test.exe

このパラメーターが指定されていない場合、アプリケーションはリモート コンピューターのシステム フォルダーに配置されている必要があります。 このようなプログラムがリモート コンピューター上に既に存在し、システム ディレクトリにない場合は、そのプログラムへの絶対パスを指定する必要があります (プログラム名にスペースが含まれる場合は、引用符で囲む必要があります)。

psexec \\SRV1 "c:\program files\test.exe"

鍵と一緒なら -c鍵を使う -fその場合、プログラムがすでにリモート システム上にある場合でも、上書きされます。 そして鍵付き -vコピーされたプログラムのバージョンがシステムにインストールされているバージョンよりも新しい場合にのみ上書きされます。

プログラムは対話モードで動作します。 デフォルトでは、PsExec は次の場所でコマンドを実行します。 隠しモードつまり、コマンドが実行されるシステム上では、ウィンドウやダイアログは表示されません。 ただし、キーを使用してこれを変更することは可能です -私。 その後、ウィンドウを表示するセッション番号を指定できます。指定できない場合は、インターフェイスはコンソール セッションで表示されます。

アプリケーションが完了するまで待つ必要がないことを示します。 この場合、コンソール ユーティリティから出力を受け取ることはできませんが、完了を待たずに出力を受け取ることができます。 前のコマンド以下を実行します。 このオプションは、非対話型アプリケーションを実行する場合にのみ使用してください。

モードでプログラムを実行するために使用されます。 手術室で必要になる場合があります Windows システム Vista 以降では、システム設定を変更するいくつかのプログラム (regedit など) を実行できます。

そして、このキーの助けを借りて、逆に、自分の力を下げることができます。 プロセスが開始されると、ユーザーが Administrators グループに属しているかどうかに関係なく、ユーザーには制限付きの権限が付与されます (Administrators グループの権限は取り消され、ユーザーには Users グループに割り当てられた権限のみが付与されます)。

満杯 背景情報コマンドを入力するだけで、すべてのプログラム キーに関する情報を取得できます。 psexecコマンドラインでパラメータを指定せずに実行します。