0

同じネットワーク上に 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
4

1 に答える 1