2017-09-01 104 views
0

我有一個簡單的遠程重新啓動服務器代碼。我正在使用Invoke Command在另一個服務器上執行腳本塊。問題是如何重新啓動此服務器,並確保在重新啓動後,它是如何遠程重新啓動服務器並確保它已啓動

我知道invoke命令會打開會話,但重啓後會關閉。如何繞過這個問題?

代碼

 try { 
     $RestartResult = Invoke-Command -ComputerName $AppServer -ScriptBlock 
     { 
      Write-EventLog –LogName Application –Source "Powershell restart script" –EntryType Information –Message "Server restart initiated" 
      Restart-Computer -Wait -For WMI -ea Stop -Delay 30 
     } 
    } 
    catch { 
     # Get the exception message. 
     $RestartResult = $_.Exception.Message 
    } 

    if ($error) { 
     Write-Log ERROR -Message $RestartResult 
    } 
    else { 
     Write-Log INFO -Message 'Host $AppServer has been restarted' 
    } 
+0

一旦您的腳本執行了重新啓動,您可以嘗試另一個嘗試重新連接的{} catch {} - 如果成功,您知道服務器已備份。 –

+0

取決於「結束」的含義。有時候ping就夠了。有時你必須確定一些服務正在運行... – fdafadf

+0

我只想檢查是否可以在此主機上建立PowerShell會話,假設我想嘗試在$ hostname服務器上執行如下操作: Invoke-Command -ComputerName $ hostname -ScriptBlock {1} 如果它可以被使用,我想嘗試2次以上,直到可能或計數器嘗試顯示3 – Ozzy

回答

0

我這是怎麼發出重啓Restart-Server.ps1這就是我如何在內部測試它的正常運行時間 Test-Server.ps1阻止執行,直到它準備好。並不是說我真的檢查了PowerShell的遠程處理是可能的,這可以保證我的服務器的操作系統不僅僅是簡單的啓動。

0
Restart-Computer -ComputerName <ConmputerName> -Wait 

將重新啓動並等待遠程主機上的PowerShell默認端點出現。