首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在while循环中捕获错误细节?

如何在while循环中捕获错误细节?
EN

Stack Overflow用户
提问于 2019-03-21 22:12:54
回答 1查看 67关注 0票数 0

我有一个PowerShell脚本,用于检查与Ip地址的连接是否有效。我在代码中添加了一个计时器,这样它就会循环并检查4分钟,然后休眠,然后重新启动。我还将此脚本添加到每5分钟运行一次的Task Scheduler中。

但是,我的问题是,如果错误发生在while循环之外,则脚本只捕获错误详细信息。如果在代码循环时出现错误,则error变量为空,不幸的是,所有错误都发生在循环中。

这是我拥有的代码。除此之外,一切都运行得很好。有什么建议或答案吗?

代码语言:javascript
复制
function Make_Decision() {
    if ($val -eq 0) {
        $msg = "Connection to [$IPaddress] FAILED`n"
        Add-Content -path C:\path\results.txt -value "[$date] - { $msg }"
        Send_Email_Groups
    }
}

function Test_Port_Connection() {
    $date = Get-Date -Format g
    $portNumber = 0000
    $IPaddress = '000.00.00.00'
    $timeout = New-TimeSpan -Minutes 4
    $sw = [Diagnostics.Stopwatch]::StartNew()
    $host_connection = New-Object System.Net.Sockets.TCPClient
    try {
        $host_connection.Connect($IPaddress, $portNumber)
    } catch {
        $erro = "[$date] - $_"
        $erro | Out-File C:\path\errors.txt -Append
    }
    while ($sw.elapsed -lt $timeout) {
        if (($host_connection.Connected) -and (Test-Connection -IPAddress $IPaddress -Count 1 -ErrorAction SilentlyContinue)) {
            $val = 1
        } else {
            $val = 0
            break
        }
        Start-Sleep -Seconds 1
    } # end of while loop
    Make_Decision
}

Test_Port_Connection
EN

Stack Overflow用户

发布于 2019-03-22 00:48:12

之所以没有$error变量,是因为powershell首先计算的是$host_connection.Connected,它为false,因此第二个语句Test-Connection -IPAddress $IPaddress -Count 1 -ErrorAction SilentlyContinue永远不会运行,因此输出永远不会分配给$error变量

如果您切换它们,那么测试将运行,并且您可以从while循环中接收错误变量:

而不是

代码语言:javascript
复制
if (($host_connection.Connected) -and (Test-Connection -IPAddress $IPaddress -Count 1 -ErrorAction SilentlyContinue))

你将会有

代码语言:javascript
复制
if ((Test-Connection -IPAddress $IPaddress -Count 1 -ErrorAction SilentlyContinue) -and ($host_connection.Connected))
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55282401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档