【コマンド(bat)】PSEXECを利用したリモート管理

【コマンド、ツールの概要】
・PSEXECは(MicrosoftTechnetに置いてある、元はSysinternalsのPStoolというツールグループの一環?)リモート管理ツール。
・さくっとリモートPCへコマンドを発行できるので便利。

【環境(使っている環境)】
・Windows10Pro
 ※他のWindowsでも動くか→動くと思われる。(7をリモート接続先として可能だった)

【条件】
セキュリティ設定が絡むので本番環境は慎重に。
<接続元PC>
 ・PSEXECをインストールしてあること。
 ・必要なら環境変数"Path"にpsexec.exeがあるフォルダのパスの記述があること。
  (「Winキー+R」→「sysdm.cpl」+エンター→「詳細設定」→「環境変数」→「ユーザーorシステム環境変数"Path"に追加」)
<接続先PC>
 ・対象のPCが起動していること。
 ・対象コンピュータで「ファイルとプリンタの共有」が有効になっていること。
 ・ポートがよしなにされていること。
  (TCP135orTCP445とかとか。FW設定の「リモートサービス管理」でいけるはず)
 ・管理共有にアクセスできるアカウントを利用できること。
  (c$とかにアクセスできるアカウント、例えばビルトインadministrator。)
 ・UACがよしなにされていること(リモートログイン時は無効など)
  ↓例えばここ参照。
  Windows 8.1 / 10で別のPCからc$(管理共有)でアクセスが拒否されたときにやること。 - Code for final


【コマンド例】

構文は [psexec呼び出し] -u [ユーザ名] -p [パスワード] [端末アドレス] [コマンド]
([psexec呼び出し]と[コマンド]以外は順番は気にしなくていいっぽい。)

・画面に出力
 C:\PSTools\psexec.exe -u 192.168.0.XX\Administrator -p pass \\192.168.0.XX cmd.exe /c "dir c:\"
  ↓環境変数Pathが通ってるなら↓
 psexec -u 192.168.0.XX\Administrator -p pass \\192.168.0.XX cmd.exe /c "dir c:\"

・ローカルのファイルに結果を出力
 psexec \\192.168.0.XX -u 192.168.0.XX\administrator -p pass cmd.exe /c "ping 192.168.0.YY" >c:\temp\test.txt
  →ローカルのc:\temp\test.txtに結果が吐かれる。

・リモートのファイルに結果を出力
 psexec \\192.168.0.XX -u 192.168.0.XX\administrator -p pass cmd.exe /c "ping 192.168.0.YY >c:\temp\test.txt"
  →リモートのc:\temp\test.txtに結果が吐かれる。

・リモートでPowerShellを実行。(WindowsUpdateLogをデフォルト(リモートユーザtestuserのデスクトップ)にファイル出力)
 psexec -u 192.168.0.XX\testuser -p pass \\192.168.0.XX powershell -Command "get-windowsupdatelog"

・ローカルのスクリプト(bat)をリモートで実行。(-cで動作としてはコピーしたのちの実行となる。オプションで -f (強制コピー)などあり。)
 psexec -u 192.168.60.XX\administrator -p pass \\192.168.60.XX -c C:\temp\mkdir.bat

 【mkdir.batの中身(ローカルの C:\temp\mkdir.bat)】

mkdir c:\temp\tttttest


【使用方法】
コマンドプロンプトで上記コマンドのようにpsexecの引数にプロパティを設定し実行。
・bat中でも使える。


【説明】
Windowsでリモート端末上でコマンド実行できるのはありがたいです。(Powershellとかでもできるけど、PSEXECは非常にシンプル。)
・batでできない処理でもexe化すればOK。
・複数のリモート端末をリスト化して順次処理なんてこともできる模様。
・対話式モードもあるとか??


【総評】
端末保守の場合、複数のアクセス手段があるとそこから選定できるから、覚えておくと役に立つときがあるかもですね!
特に管理共有権限付きの(administratorでない)管理者ユーザを作っておけばリモデでちょこちょこ設定した後、「あとで直しときます」って一旦ユーザ開放しつつ裏で作業なんてことできそう。
WindowsクライアントのGUI複数ログインは基本できないせいで業後まで待つなんて悲しいしね。。
 

【参考リンク】
PsExec

PsExec | IT Pro

PSexecについて - やる気ないSEのメモ