【发布时间】:2017-09-01 12:07:53
【问题描述】:
我有一个远程重启服务器的简单代码。我正在使用调用命令在一台服务器上从另一台服务器执行脚本块。问题是如何重新启动此服务器并确保在重新启动后它已启动?
我知道调用命令会打开会话,但重启后会关闭。如何绕过这个问题?
代码
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'
}
【问题讨论】:
-
一旦您的脚本执行了重新启动,您可以再尝试一次尝试重新连接的尝试{}catch{} - 如果成功,则您知道服务器已备份。
-
取决于“已启动”的含义。有时 ping 就足够了。有时您必须确保某些服务正在运行...
-
我只是想检查我是否可以在此主机上建立 powershell 会话,假设我想尝试在 $hostname 服务器上执行类似的操作: Invoke-Command -ComputerName $hostname -ScriptBlock { 1 } 如果不可能,我想再试 2 次,直到有可能或尝试计数器显示 3
标签: windows powershell server powershell-3.0