こんにちは松田です。
Windowsサーバを運用していると、ちょっとサーバでコマンド実行したいときに、
わざわざリモートデスクトップで接続するのは面倒くさい…ということがあると思います。
そんなときに使えるリモートでコマンドを実行する方法をご紹介します。
対象バージョン
- Windows Vista以上
- Windows Server 2008以上
PsExecのダウンロード
マイクロソフトが公開しているPsExecを使うことでリモートから任意のコマンドが実行できます。
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
からPsTools.zipをダウンロードし、適当なフォルダ(今回はC:\PsTools)に解凍します。
exeファイルがたくさん含まれていますが、PsExec.exeだけあればOKです。
リモートコマンドの実行
コマンドプロンプトを起動し、PsExec.exeにパスが通るようにフォルダ移動して、以下の形式で実行します。
cd C:\PsTools
PsExec.exe -u [ユーザ] -p [パスワード] \\[対象サーバ] [実行コマンド]
ユーザ名がAdministrator、パスワードが12345678、対象サーバが192.168.10.20、実行コマンドがipconfigの場合は、以下のようになります。
c:\PSTools> PsExec.exe -u Administrator -p "12345678" \\192.168.10.20 ipconfig
PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
Windows IP 構成
不明なアダプター ローカル エリア接続:
メディアの状態. . . . . . . . . . . .: メディアは接続されていません
接続固有の DNS サフィックス . . . . .:
イーサネット アダプター ローカル エリア接続:
接続固有の DNS サフィックス . . . :
IPv4 アドレス . . . . . . . . . . : 192.168.10.20
サブネット マスク . . . . . . . . : 255.255.255.0
デフォルト ゲートウェイ . . . . . : 192.168.10.1
ipconfig exited on 192.168.10.20 with error code 0.
なお、PsExecが出力するメッセージは標準エラー出力なので、2>${NULL}で捨てることでリモートコマンドの結果のみ表示させることができます。
実行できない場合
PsExecはポート445番(管理共有)を利用します。
対象サーバで管理共有が有効になっていること、ポート445番がファイアウォールで許可されていることをご確認ください。
WindowsXPやWindowsServer2003などの古いOSの場合は、エラーとなり実行できませんでした。
また、Windows7とWindowsServer2008(R2含む)は実行はできましたが、PsExecのコマンドプロンプトへの標準(エラー)出力が途中で止まることがありました。
終わりに
サクっとコマンドを実行したい場合は、PsExecは便利です。
また、RDPと違ってコマンド実行できるので、バッチからリモートコマンドを実行したい場合にも使えます。
ぜひ活用してみてください。