リモートPCのプログラムを実行するためのPsExecの環境設定

環境によっては設定項目が多くて忘れそうなのでメモ

PsExecって何?

ざっくり言えば自分のPCから他のPCにあるプログラムを実行できるMicrosoft製のツール。

ホストPCの設定

1.PsTools のダウンロード
任意の場所にダウンロードする。
https://technet.microsoft.com/ja-jp/sysinternals/bb897553

2.展開して終了
インストール等は必要なし。

リモートPCの設定

・UACを無効化

[コントロールパネル]→ [ユーザーアカウント]→ [ユーザーアカウント]→[ユーザーアカウント制御設定の変更]→「以下の場合でも通知しない」

・受信の規則を変更

[コントロールパネル]→ [システムとセキュリティ]→[Windowsファイアウォール]→ [詳細設定]→ [受信の規則]

1.[グループ]が「リモート サービス管理」である項目をすべて有効化
2. 以下のポートを開放する

135/tcp(RPCエンドポイント・マッパー)
445/tcp(ダイレクト・ホスティングSMB)
1025~65535/tcp(RPC動的ポート):system32\services.exeに対して開放

・135,445の開放

[新しい規則]→「ポート」にチェックを入れて「次へ」
「TCP」にチェック→「特定のローカルポート」に「135,445」を入力 → 「次へ」
「接続を許可する」にチェックを入れて「次へ」
「ドメイン」のみにチェックを入れて「次へ」
「名前」と「説明」を入力して「完了」

・1025~65535の開放

上記と同じ方法で「1025-65535」を設定
追加した規則を選択 -> 右のウィンドウから[プロパティ]
[プログラムおよびサービス]タブ →[プログラム]の「次のプログラム」→[参照]で「services.exe」を指定
  

・レジストリの編集

regeditを起動
HKEY_LOCAL_MACHINE → SOFTWARE → Microsoft → Windows → CurrentVersion → Policies → Systemまで移動
[編集]→[新規]→[DWORD(32ビット)値]で追加
名前を「LocalAccountTokenFilterPolicy」にして値を1に変更

PsExecの実行

展開しら「PSTools」フォルダ内の「PsExec」を以下のようなオプションをつけて実行する。
管理者権限を持つアカウントで実行し、リモート側も管理者権限を持つアカウントを対象とする。

psexec -s -i -d \\[DeviceName] -u [UserName] -p [Password] [コマンド]
[DeviceName]
 リモートPCのコンピュータ名
[UserName]
 リモートPCのユーザー名。環境によっては[DeviceName]\[UserName]と記載しないといけない場合もある。
 コントロールパネルなどで表示されているアカウント名とは異なる場合があるので注意。「C:\Users」内のフォルダ名になっているのがユーザー名。
[Password]
 ユーザーに対応したパスワード。
-s
 System アカウントで、リモート プロセスを実行します。
-i
 プログラムを実行して、リモート システムの指定したセッションのデスクトップと対話するようにします。セッションを指定しないと、プロセスはコンソール セッションで実行されます。
-d

 アプリケーションが終了するのを待ちません。このオプションは、非対話型のアプリケーションにのみ使用します。
-u
 ログイン用のユーザー名をリモートコンピューターに指定します (これはオプションです)。
-p
 ユーザー名のパスワードを指定します (これはオプションです)。省略すると、隠しパスワードの入力を要求するメッセージが表示されます。
・管理者権限を持つアカウントで実行
・リモート側も管理者権限を持つアカウントを対象


この記事が気に入ったらサポートをしてみませんか?