gpt4 book ai didi

powershell - 根据 ping 所用的时间 ping 服务器和输出

转载 作者:行者123 更新时间:2023-12-03 00:33:48 25 4
gpt4 key购买 nike

我有以下代码:

$Servers = "8.8.8.8"
$TimeStart = Get-Date
$TimeEnd = $TimeStart.AddMinutes(1)

Do {
Foreach($s in $Servers) {
$Timeout = 1
$Ping = New-Object System.Net.NetworkInformation.Ping
$Response = $Ping.Send($s,$Timeout)
$Response.Status
$TimeNow = Get-Date
}
}
Until ($TimeNow -ge $TimeEnd)

但它似乎运行得太频繁了。理想情况下,我希望每隔一分钟进行一次 ping,如果 ping 花费的时间超过 5 毫秒,则记录“TimedOut”和低于 5 毫秒的任何内容以记录“成功”。此外,输出日期也很有用。

我将如何操纵这段代码来实现这一点?

最佳答案

您可以使用 Test-Connection去做这个。这是一种方法,稍作修改即可获得所需的附加信息:

Test-Connection -ComputerName $servers -Delay 1 -Count 60 |
Add-Member -MemberType NoteProperty -Name Date -Value (Get-Date) -PassThru |
Add-Member -MemberType NoteProperty -Name Status -Value $(if($_.ResponseTime -gt 5){"Failed"}else{"Succeeded"}) -PassThru

这将 ping $servers 中的每个服务器每秒一次,持续 60 秒,并输出标准对象,具有两个新属性: Date (ping 的日期时间)和 Status (是成功还是失败?)

您可以捕获这些,在屏幕上显示它们或发送到文件。例如,要通过保存到 CSV 来记录数据,您只需附加以下内容:
| Export-Csv .\ping.csv
CSV 将包含比您需要的更多信息,因此您可以选择导出的内容,或者干脆忽略您不想要的内容并使用您需要的部分。

编辑:显示自定义属性

要在控制台中查看自定义属性,请附加以下内容:
| Format-Table PsComputerName, Date, ResponseTime, Status

关于powershell - 根据 ping 所用的时间 ping 服务器和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51327101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com