【bat】複数PCに一括でコマンドを送る方法|ネットワーク越しの遠隔実行と管理

【bat】複数PCに一括でコマンドを送る方法|ネットワーク越しの遠隔実行と管理 bat

業務現場では、複数のPCに対して一括でコマンドを実行したい場面が頻繁にあります。たとえば、ソフトウェアのアップデートやログ収集、サービスの再起動など、個別に実行するには手間とミスが伴います。

本記事では、バッチファイルを使ってLAN内の複数PCにコマンドを遠隔実行する方法を解説します。代表的なツール「PsExec」を使った方法を中心に、前提条件やセキュリティ上の注意点も併せて紹介します。

遠隔実行に使うツール:PsExecとは

PsExec は、Microsoftが提供するSysinternalsツールの一部で、リモートPC上でコマンドを実行できる軽量なツールです。インストール不要で使えるため、管理用バッチとの相性も抜群です。

公式ダウンロード先:

PsExec - Sysinternals
Execute processes on remote systems.

基本的な構文

PsExecの基本的な構文は以下の通りです。

psexec \\[リモートPC名またはIP] -u [ユーザー名] -p [パスワード] cmd /c "実行するコマンド"

たとえば、リモートPCで電源情報を取得するには以下のように記述します。

psexec \\192.168.1.10 -u admin -p password cmd /c "powercfg /batteryreport"

複数PCに対して一括実行するバッチ

複数のPCに対して処理を行うには、IPやホスト名のリストを用意し、ループで処理します。

@echo off
setlocal

set "USER=admin"
set "PASS=yourpassword"
set "COMMAND=ipconfig"

for /f %%H in (host_list.txt) do (
  echo --- %%H への実行開始 ---
  psexec \\%%H -u %USER% -p %PASS% cmd /c "%COMMAND%"
  echo --- %%H の処理終了 ---
)

endlocal

host_list.txt には、実行対象のホスト名やIPアドレスを1行ずつ記載しておきます。

host_list.txtの例

192.168.1.101
192.168.1.102
192.168.1.103

上記の例では、3台のPCに `ipconfig` コマンドを実行し、その出力がそれぞれのターミナル上に表示されます。

実行結果をログファイルに保存する

出力を記録しておきたい場合は、ログ出力のリダイレクトを追加します。

@echo off
setlocal

set "USER=admin"
set "PASS=yourpassword"
set "COMMAND=ipconfig"
set "LOGFILE=remote_log.txt"

echo ==== 実行開始 %DATE% %TIME% ==== >> %LOGFILE%

for /f %%H in (host_list.txt) do (
  echo [%%H] 実行開始 >> %LOGFILE%
  psexec \\%%H -u %USER% -p %PASS% cmd /c "%COMMAND%" >> %LOGFILE% 2>&1
  echo [%%H] 実行終了 >> %LOGFILE%
)

echo ==== 実行終了 %DATE% %TIME% ==== >> %LOGFILE%

endlocal

これで、すべての実行結果をひとつのログファイルにまとめて記録できます。

実行前に必要な準備

PsExecを使うには、リモートPCで以下の条件が満たされている必要があります。

  • リモートPCのファイアウォールで「ファイルとプリンターの共有」が許可されている
  • リモートPCに管理者権限で接続できるユーザーアカウントが存在する
  • Windowsの設定でリモート管理が許可されている

また、セキュリティの観点から パスワードをバッチ内にハードコーディングすることは推奨されません。運用環境では資格情報を別ファイルや認証ツールに委ねる方法も検討してください。

まとめ

バッチファイルとPsExecを組み合わせることで、複数PCへの一括コマンド実行が可能になります。次のような用途に活用できます。

  • 定期的なシステム設定の反映
  • 一括ログ取得
  • ソフトウェアの遠隔インストールや再起動

中小規模の社内ネットワークであれば、シンプルかつ強力な手段として活用できるため、ぜひ業務に取り入れてみてください。