Powershell Web检查脚本在第二次运行时挂起

Powershell Web检查脚本在第二次运行时挂起,powershell,powershell-2.0,Powershell,Powershell 2.0,我正在尝试连接到谷歌快速检查互联网可用性和主机响应。如果检查返回200,则转到下一个脚本 下面的脚本最初起作用。但是,当我多次尝试时,特别是在运行了2次之后,PowerShell会挂起并且不会向前移动。 如果重新启动PowerShell并运行脚本,它会正常运行两次,然后再次挂起 我计划把它放在调度程序中,并定期运行它。 我错过了什么?你们谁能提出建议 # Once connection gets established, quick status test $request = [System.

我正在尝试连接到谷歌快速检查互联网可用性和主机响应。如果检查返回200,则转到下一个脚本

下面的脚本最初起作用。但是,当我多次尝试时,特别是在运行了2次之后,PowerShell会挂起并且不会向前移动。 如果重新启动PowerShell并运行脚本,它会正常运行两次,然后再次挂起

我计划把它放在调度程序中,并定期运行它。 我错过了什么?你们谁能提出建议

# Once connection gets established, quick status test
$request = [System.Net.WebRequest]::Create("http://www.google.com")
try {
  $response = $request.GetResponse()
} catch {
  if ($error) {
    # write some error on the log
  }
}

# if response returns 200, proceed next step, else create critical log
if ($response.StatusCode.value__ -eq 200) {
  & ./hostCheck.ps1 ; # Start host Check
}

它到底卡在哪里?当从web获取响应时,或者当运行
hostCheck.ps1
?您好,它似乎卡在$response=$request.GetResponse()这一部分。是否有一种方法可以在进程结束后清理连接?$response.Close()具体做什么?它是否清除了GetResponse?因此,如果有任何循环要连接,我基本上必须再次执行GetResponse()?我在末尾添加了$response.Close(),它就不会被卡住了。到目前为止,我已经运行了6次,仍然工作良好。所以我想它解决了。谢谢你花时间来研究这个问题。如果有疑问,请阅读。您还应该调用以释放响应对象分配的资源。