Windows-Server-2008
如何按順序系統地關閉 Windows 服務?
我們有這個具有三 (3) 項服務的開源應用程序。出於這個問題的目的,我們稱它們為A、B和C。
現在,它們必須按特定順序關閉。該順序將是 A 然後 B 然後 C。
如果 B 在 A 之前關閉,那麼我們就會遇到各種問題。如果 C 在 B 或 A 之前關閉,情況也是如此。此外,由於有多少使用者在使用它,每個服務可能需要不同的時間來關閉。
哦,這需要包含在 DOS 批處理文件中,或者非技術使用者只需點兩下即可啟動。(PowerShell 不是不可能的,但我從未使用過它)。另外,我是 C# 編碼器,因此也可以使用。
無論如何,當啟動重新啟動時,需要發生以下情況:
1) Initiate shutdown of service A 2) When service A is down, it should trigger the shutdown of service B 3) When service B is down, it should trigger the shutdown of service C 4) When service C is down, it should trigger the START UP of service A 5) When service A is UP, it should trigger the START UP of service B 6) When service B is UP, it should trigger the START UP of service C
如您所見,每次停止/開始都需要等待前一次完全完成才能繼續。而且由於每個服務可能需要幾秒鐘到幾分鐘,我們不能使用任何類型的計時技巧。
建議非常感謝。
謝謝!
您可以使用 PowerShell 執行此操作。要停止服務,請使用 Stop-Service 命令。使用 Start-Service 命令啟動服務。因此,您可以為需要停止的每個服務創建一個包含如下條目的腳本,按順序:
Stop-Service ServiceA do { Start-Sleep -Milliseconds 200} until ((get-service ServiceA).status -eq 'Stopped')
並啟動服務:
Start-Service ServiceA do { Start-Sleep -Milliseconds 200} until ((get-service ServiceA).status -eq 'Running')
然後,您可以在腳本中將 6 個這些程式碼塊串在一起,將其保存為 .ps1 文件,然後從 powershell 提示符執行它,如下所示:
PS C:\> C:\Path\To\Script\script.ps1