如何远程重启服务器并确保它已启动

时间:2017-09-01 12:07:54

标签: windows powershell server powershell-v3.0

我有一个远程重启服务器的简单代码。我使用Invoke命令在另一台服务器上执行脚本块。问题是如何重新启动此服务器并确保在重新启动后它已启动

我知道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'
    }

3 个答案:

答案 0 :(得分:0)

您可以使用这些代码检查正常运行时间,以检查您的服务器是否刚刚重新启动

Get-CimInstance -ClassName win32_operatingsystem | select csname, lastbootuptime

参考链接:https://blogs.technet.microsoft.com/heyscriptingguy/2013/03/27/powertip-get-the-last-boot-time-with-powershell/

答案 1 :(得分:0)

这就是我发布重启Restart-Server.ps1的方法,这就是我内部测试它的正常运行时间 Test-Server.ps1阻止执行,直到它准备就绪。并不是说我确实检查了PowerShell远程处理是否可行,这可以保证服务器的操作系统不仅仅是启动。

答案 2 :(得分:0)

Restart-Computer -ComputerName <ConmputerName> -Wait

将重启并等待远程主机上的PowerShell默认端点出现。