如何使用powershell一次重新启动一个服务列表?

如何使用powershell一次重新启动一个服务列表?,powershell,Powershell,使用power shell逐个重新启动远程服务列表,即(第一台服务器必须联机,然后只有脚本才能重新启动第二台服务器或停止脚本) $Output= @() $names = Get-content "D:\Dhana\Servers.txt" foreach ($name in $names){ if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue) { Write-Host "

使用power shell逐个重新启动远程服务列表,即(第一台服务器必须联机,然后只有脚本才能重新启动第二台服务器或停止脚本)

$Output= @()
$names = Get-content "D:\Dhana\Servers.txt"
foreach ($name in $names){
  if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue)
  {

   Write-Host "$Name is online and initiating restart"
   Restart-Computer $name -Force
  }
  else{
    $Output+= "$name is offline"
    Write-Host "$Name is offline"
  }
}
$Output | Out-file "D:\Dhana\Offline servers log.csv" 

“在线”对你意味着什么?服务器出现并响应ICMP(ping)是否足够,或者您是否希望确保它正在提供服务?如果服务器在重新启动后没有出现,您希望脚本做什么?在继续之前测试连接可能使用
测试连接
不是一个好主意,因为,您的服务器可以响应ICMP而不同时工作。更好的方法是,然后检查服务器是否启动:
$testSession=New PSSession-Computer$Name if(-not($testSession)){#如果不加载怎么办}否则{#做点什么,服务器可访问。删除PSSession$testSession}
等待它变得可访问,您可以使用
while(){}
,但是,如果它没有启动,您将收到无休止的循环。如果必须先有一台服务器联机,那么它必须具有依赖关系。为什么不检查依赖关系,例如检查依赖服务是否正在运行?