同じネットワーク上に 3 つのサーバーがあり、ログインするための同じユーザー名とパスワードがあり、次の操作を実行したいと考えています。
*Check if Service1 is running or not
*If it is running, stop the service
*Set Service1 to disable mode
*If it is not running, do nothing
*Check if Service2 is running
*If it is running, stop the service
*Set Service2 to disable mode
*If it is not running, do nothing
など Service3、..4、..5...
1 台目のサーバーに Master.bat ファイルを作成します。このファイルは、3 台のサーバーすべてで上記の操作を並行して実行する必要があります。
以下で試していますが、同じコードで複数のサービスに対してこれを行う方法がわかりません。また、少し長くなります。バッチまたはパワーシェルでこれを行う他の短い方法はありますか?
original_serverlist.txt:
Server1
Server2
Server3
コード:
copy original_serverlist.txt serverlist.txt
:repeat
set currentserver=
for /f "eol=; tokens=1*" %%i in (serverlist.txt) do set currentserver=%%i
if "%currentserver%"=="" goto end
for /F "tokens=3 delims=: " %%H in ('SC query Service1 ^| findstr " STATE"') do (
if /I "%%H" "RUNNING" (
net stop Service1
echo Service1 stopped @ %date% %time% > C:\result.txt
sc config Service1 start= disabled
echo Service1 set disabled @ %date% %time% >> C:\result.txt
)
)
type serverlist.txt| find /v "%currentserver%"> serverlist1.txt
copy serverlist1.txt serverlist.txt
goto repeat
:end
del serverlist.txt
del serverlist1.txt
編集1
私はバッチほどPSに慣れていませんが、物事を学びたいので、コードの説明でpowershellに実装する方法を学ぶためにここに私の正確な要件を置きます.
Server1 にMaster.ps1がある 3 つのリモート サーバー (Server1、Server2、Server3) すべてで、次の同じ一連の操作を並行して実行する必要があります。
run command cmd /c iisreset/stop and set IIS service to Disabled mode
Stop service1 and set it to Disabled mode
Stop service2 and set it to Disabled mode
Stop service3 and set it to Disabled mode
Kill process jusched.exe
Kill process conhost.exe