リモートサーバのサービスをコマンドで再起動する
2024年9月28日
プリントサーバに何か問題がある度にログインして、ServicesのGUIから印刷(プリント)スプーラーを再起動するのが面倒だったので作ったバッチファイル。
どこかのサーバに置いとけば、複数のサーバの特定のサービスを一気に再起動できます。
前提条件
- Windowsサーバ
- 実行するユーザがそれぞれのサーバに対して管理者権限を持っていること
- 実行元ホストから実行先ホストに対してポート445/tcpが開いていること
バッチファイル(.cmd or .bat)中身
ホスト名(またはIPアドレス)とサービス名を書き換えて使ってください。net use
の後に/user
を追記すればどこかのサーバにログインしたり、管理者で実行も特に必要なくなるかと。
そもそも管理者権限を持っているログインユーザで実行するならnet use
必要ないです。
@echo off && setlocal
rem Server1
call :RestartService 192.168.0.1 "Spooler"
rem Server2
call :RestartService 192.168.0.2 "Spooler"
rem Server3
call :RestartService 192.168.0.3 "Spooler"
exit /b
rem Restart the service by the argument
rem %1: Remote Server
rem %2: Service Name
:RestartService
net use \\%1\ipc$
sc \\%1 stop %2
:DoWhile
sc \\%1 query %2 | findstr STATE | findstr STOPPED
if %ERRORLEVEL% EQU 0 goto DoWhileExit
goto DoWhile
:DoWhileExit
sc \\%1 start %2
net use \\%1\ipc$ /delete
exit /b