リモート コンピューター上でプログラムを実行します。 ネットワーク経由でリモートコンピュータ上でコンソールコマンドを実行する

07.11.2018

この記事では、ネットワーク上のリモート コンピュータでコンソール コマンドを実行する方法について説明します。いくつかの非常に役立つ例が例として示されています。 システム管理者チーム。

2つの製品を使用しています リモート実行コンソール コマンド: PsExec と WinRM、それぞれに独自の利点があります。

たとえば、有効または無効にすることができます。 全画面モード。 ユーザーとチャットを開始して、 追加情報問題について。 また、あるコンピュータから別のコンピュータへは、いかなる種類のファイルも転送されません。 一般設定プログラムは非常に豊富です。 [全般] タブで、会社名または組織名とコンピュータの説明を入力します。 設定を保護するかどうかを選択できます ソフトウェア接続時にコンピュータがスタンバイ モードになるかどうかに関係なく、パスワードを使用して、受信接続のみの表示を許可することもできます。

PsExec

タイトルで提起された問題に対する優れた解決策の 1 つは、偉大な Mark Russinovich の PsExec プログラムを使用することです。

このプログラムはクライアント/サーバーの原則に基づいて動作します。クライアントはローカル マシン上で実行され、クライアントはリモート コンピューター上のサーバーにコマンドを送信します。 このプログラムの特徴は、 サーバー部分コマンドが実行される直前に自動的にインストールされ、その後削除されます。 したがって、リモート マシン上でコマンドを実行するには、そのマシンに対する管理者権限があれば十分です。

賢いオプションは、プログラムがログインに使用するパスワードを変更できるオプションです。これにより、リモート アシスタンス プロセスがさらに簡単になります。 接続を改善するために、いくつかのオプションをオンまたはオフにできます。

  • 色の深さ。
  • グラフィック効果。
  • プロキシサーバー。
直感的なインターフェイス、多言語サポート、そして比類のない使いやすさを備えています。 ダウンロードするには 無料版プログラムとサブスクリプション プランの詳細については、記事の最後にあるリンクを参照してください。 職場のコンピューターに物理的に存在することはできませんが、コンピューターで作業する必要がありますか? 一見解決不可能に見える問題は、リモート デスクトップ接続テクノロジです。このテクノロジを使用すると、コンピュータにリモートで接続し、実際にそこに座っているかのようにコンピュータを制御できます。

PsExec がリモート コンピューターと同じドメインの一部である管理者として実行されている場合は、資格情報を入力する必要さえありません。 それ以外の場合は、次のように指定できます。 コマンドライン、または PsExec 自体がそれらを要求します。 PsExec は、Windows 2000 から 64 ビット Windows Server 2008 R2 までの OS 上で実行されます。

PsExec では次の機能が非常に便利です。

コンピューターからデータを取得したり、コンピューター上で小さなアクティビティを実行したりする必要があり、大規模な企業ビルの反対側にいるか、完全に外にいる状況を想像してください。 現在のコンピュータ上で別のウィンドウが開き、リモート コンピュータのデスクトップ、すべてのファイル、アプリケーションが表示されます。 このツールは、ユーザーの行動を追跡するためには使用されません。 リモート デスクトップは、コンピュータに接続する必要がある人のためのツールとして使用する必要があります。 ローカルネットワーク.

  • コンピュータのグループ上でコマンドを実行する。 例: 次のコマンドは、最新のものを強制します。 グループポリシー:
    psexec @group.txt gpupdate /force
  • システムアカウントとしてコマンドを実行する。 例: 次のコマンドにより、 リモートシステム更新の強制チェック:
    psexec \\computer -s wuauclt /detectnow
  • 実行中のプログラムを実行する前にリモート コンピュータにコピーする。 例: 次のコマンドはメンバーシップを更新します このコンピュータの再起動せずに Active Directory セキュリティ グループ (アクセス トークン) で:
    psexec \\computer -c -s klist.exe のパージ

Windows に組み込まれているスクリプトとコンソール コマンドの機能を使用する場合、このプログラムの有用性を過大評価することは困難です。

最後の 2 つを除くすべてのリリースは、複数のモニターの同時使用をサポートしていません。 ただし、使用する前に、いくつかの微調整を行い、いくつかの条件を満たす必要があります。 まず、この機能が有効になっていることを確認する必要があります。 [スタート] メニューから [コンピュータ] を右クリックし、ポップアップ メニューから [プロパティ] を選択します。 左側の「リモート アクセス オプション」をクリックし、「開く」ダイアログ ボックスの「リモート デスクトップ」セクションで、提案されたオプションのいずれかを選択します。

Windows リモート管理

当初はサーバー技術でした。 リモコンハードウェア。ハードウェア管理機能の一部として Windows Server 2003 R2 に導入されましたが、Microsoft は最近リリースしました。 Windowsパッケージ管理フレームワーク。PowerShell 2.0 および WinRM 2.0 が含まれ、更新としてクライアント OS にインストールされます。 詳細については、記事 KB968929 を参照してください。

「ユーザーの選択」ボタンを使用すると、どのユーザーにアクセス権を与えるかを指定できます。 リモートアクセス。 何も選択しない場合は、サインインしているアカウントが自動的にカウントされます。 リモート デスクトップもパスワード保護の対象となります。

最も基本的なルールは、 リモート接続コンピュータの電源が入っている場合にのみ実行できます。 スリープモードであってもスリープモードにはならないはずなので、これらの状態に自動的に切り替わるように設定する必要があります。 ここで次の設定を行うことができます: コントロール パネル ハードウェアとサウンド 電源オプション。

WinRM の利点は、オプションの OS アップグレードとしての WSUS を介したドメイン環境への展開の容易さと、PowerShell と併用したときに提供される機能です。

WinRM を使用するには、2 つのコマンドを使用します。

winrm.cmd設定を構成し、WinRM クライアントとサーバーを診断するのに役立ちます。

WinRM サーバーがコマンドの受け入れを開始するには、Windows リモート管理サービスを開始し、その初期構成を実行する必要があります。 コマンドを使用する

すべての条件が満たされると、ホスト コンピューターへの接続を開始できます。 入力したら、「接続」をクリックし、プロンプトでログイン情報が入力されるまで待ちます。 物理的にコンピュータに座っている場合に入力するのと同じ情報を使用します。 その後、接続自体が行われ、リモート コンピュータのインターフェイスが別のウィンドウまたは画面全体に開きます。 もちろん、ユーザーの快適性が低下する場合でも、全画面モードをキャンセルすることもできます。

これで、デフォルトのコンピュータで作業できるようになり、すべての作業をメイン コンピュータに直接行うことができます。 もちろん、彼のドライブに保存されているすべてのデータへのアクセスが問題になります。 重要なことは、あなたがこのように接続されている場合、他の誰もそれに取り組むことができないということです。

ローカルマシン上のwinrm Quickconfig、または耳を使ったトリック
psexec -s \\servername PsExec をシステム アカウントとして使用して、ネットワーク経由で winrm Quickconfig を実行します。

WinRM サービスを自動的に開始してリモート接続を許可するよう求められますので、同意します;)

クライアント コンピューターと同じドメインの一部ではない WinRM サーバー (コマンドを受信するサーバー部分を意味します) に正常に接続するには、次のコマンドを使用して、このターゲット サーバーをクライアントの「信頼できるリスト」に追加する必要があります。

ジョブを閉じるには、リモート デスクトップ接続ウィンドウを閉じてすべての接続を終了します。 リモート コンピュータから誰かがコンピュータにログインしたり、誰かがコンピュータを切断したりすると、接続も自動的に終了することに注意してください。

[リモート デスクトップ接続] ダイアログ ボックスで [オプション] をクリックすると、 詳細設定接続、転送、グラフィックスのオプションを指定するためのいくつかのタブが表示されます。 例えば、 多数のエフェクトを有効にすると、応答が遅くなり、画像のレンダリングが荒くなる場合があります。 したがって、[パフォーマンス] タブでは、チェックボックスを使用して、リモート デスクトップが使用する効果を指定できます。 オフにすればするほど、より多くのことができるようになります。

winrm set winrm/config/client @(TrustedHosts="servername") 。ここで、servername の代わりに IP アドレスまたは * (アスタリスク) を指定できます。

のために Windowsユーザー Vista および Windows 7 では、組み込みの管理者として実行されていない (これが通常のケースです) 場合は、次のコマンドを実行する必要があります。

reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f

デフォルトでは、クライアントからの同時 WinRM 接続は 5 に制限されています。この数を増やすには、次のコマンドを実行します。

解像度が異なると、状況がより複雑になる可能性があります。 デフォルトでは、接続しているコンピュータの解像度が使用され、別のウィンドウでリモート デスクトップを使用したい場合は、スクロール バーが表示されます。 [表示] タブでは、スライダーを使用して、使用する解像度を設定できます。 右に動かすと全画面モードになります。

[ローカル ツール] タブには次の内容も含まれています 重要な設定。 ここで、「リモート オーディオ」セクションではリモート コンピューターのオーディオの再生方法を指定でき、「キーボード」セクションではリモート デスクトップ ウィンドウがキーボード ショートカットにどのように応答するかを指定できます。

winrm s winrm/config/winrs @(MaxShellsPerUser="X")

winrs.exe— サーバー部分にリクエストを送信するためのクライアント。 例: 次のコマンドはリモート システムを強制的に再起動します...

winrs -r:サーバー名 shutdown /r /t 0

ドメイン環境では、コマンドを送信するときに実行ユーザーの資格情報が使用されます。 別のユーザーに代わってコマンドを送信するには、-u:user -p:pass スイッチを使用します。 例: 次のコマンドは、リモート システム上のローカル DNS 名キャッシュをクリアします。

リモート コンピュータから現在のコンピュータにデータをコピーしたい場合、これまでのようにファイルをドラッグ アンド ドロップするだけではできないことにおそらくがっかりするでしょう。 仮想マシン。 解決策は、現在のデスクトップ ストレージ デバイスのサポートをリモート デスクトップにインストールすることです。

リモート コンピューターでは、この場所はエクスプローラーにリモート フォルダーとして表示されます。 似たような技術ですが、使い方が異なります。 その人が参加すると、あなたの画面を見て、あなたと二人が見ているものについて話すことができます。 許可があれば、自分のマウスとキーボードを使用してコンピュータを一時的に制御することもできます。 あなたも同じように他の人を助けることができます。

winrs -r:サーバー名 -u:ユーザー -p:pass ipconfig /flushdns

PsExec - コマンドをリモートで実行するためのユーティリティ

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

一部のウイルス スキャナは、1 つ以上のリモート管理ツールが「リモート アドミニストレータ」ウイルスに感染していると報告します。 一部のグラフィックス カードは、複数のモニタにまたがって「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 プログラムと同じアカウントで起動されます。 ただし、リモート プロセスは偽装されているため、アクセスできません。 ネットワークリソースリモートシステム。 ユーザー名を指定すると、リモート プロセスは指定されたアカウントで実行され、このアカウントと同じリモート システムのネットワーク リソースにアクセスできるようになります。 ただし、パスワードはクリア テキストでリモート システムに送信されることに注意してください。

要求された名前は有効であり、データベース内で見つかりましたが、対応するデータが許可されているものと一致しません。 他にもあります 考えられるエラー、ここでは言及されていません。 次の Microsoft サポート技術情報の記事を参照してください。 制御リストを作成するには、単純なファイル共有を無効にする必要があります。

共有ドライブとフォルダーへのアクセス。 詳細設定のリストをスクロールし、「シンプルを使用」のチェックを外します。 共有ファイル。 簡易ファイル転送は利用できない場合があります。 このメッセージは単なる情報であり、エラー メッセージではありません。 これは、ユーザーがファイルまたはフォルダーを右クリックしてリモート コンピューターにダウンロードする権利を持っているかどうかを意味します。 メッセージが受信されたとしても、ローカル コンピューターからリモート コンピューターにファイルを送信する機能が失われているわけではありません。

例として、リモート コンピューター 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コマンドラインでパラメータを指定せずに実行します。