使用 PowerShell 检查网络可达性
在日常的系统管理和网络监控中,确认设备的网络可达性是一个常见且重要的任务。本文将详细解析一段使用 PowerShell 编写的脚本,该脚本用于检查一组机器是否可达,并将可达的机器列出。
PowerShell 脚本:
# 定义机器名数组
$machines = @(
"PC-TEST01",
"PC-TEST02"
)
# 定义域名后缀
$domainSuffix = "domain"
# 定义可达机器的数组
$reachableMachines = @()
# 遍历机器名数组并执行 ping
foreach ($machine in $machines) {
$fullDomain = $machine + $domainSuffix
Write-Host "Pinging $fullDomain..."
try {
# 执行 ping 命令
$result = Test-Connection -ComputerName $fullDomain -Count 2 -ErrorAction Stop
# 如果 ping 成功,输出结果并添加到可达机器数组
Write-Host "$fullDomain is reachable."
$reachableMachines += $fullDomain
} catch {
# 如果 ping 失败,输出错误信息
Write-Host "$fullDomain is not reachable."
}
}
# 输出可达机器列表
Write-Host "`nReachable Machines:"
$reachableMachines | ForEach-Object { Write-Host $_ }
1. 定义机器名数组
$machines = @(
"PC-TEST01",
"PC-TEST02"
)
这一部分定义了一个名为 $machines
的数组,包含了需要检查的机器名称。这里列出了两台机器:PC-TEST01
和 PC-TEST02
。可以根据实际需求,增加或者修改这个数组中的机器名。
2. 定义域名后缀
$domainSuffix = "domain"
$domainSuffix
变量用于定义这些机器的域名后缀。在实际应用中,这可以是一个有效的域名后缀,比如 .local
或 .com
,依赖于你的网络设置。
3. 定义可达机器的数组
$reachableMachines = @()
这里初始化了一个空数组 $reachableMachines
,用于存放那些可以成功 ping 通的机器名称。
4. 遍历机器名数组并执行 ping
foreach ($machine in $machines) {
$fullDomain = $machine + $domainSuffix
Write-Host "Pinging $fullDomain..."
try {
$result = Test-Connection -ComputerName $fullDomain -Count 2 -ErrorAction Stop
Write-Host "$fullDomain is reachable."
$reachableMachines += $fullDomain
} catch {
Write-Host "$fullDomain is not reachable."
}
}
这一部分是脚本的核心。它使用 foreach
循环遍历 $machines
数组中的每个机器名称。每次循环中:
- 将机器名称与域名后缀组合,形成完整的域名
$fullDomain
。 - 使用
Write-Host
输出正在 ping 的机器名。 - 使用
Test-Connection
命令尝试 ping 该机器,-Count 2
表示发送两个 ping 请求,-ErrorAction Stop
选项确保在出现错误时停止执行。 - 如果 ping 成功,机器名称将被添加到
$reachableMachines
数组中,并输出相应的可达性信息。 - 如果 ping 失败,脚本会捕获异常,并输出该机器不可达的错误信息。
5. 输出可达机器列表
Write-Host "`nReachable Machines:"
$reachableMachines | ForEach-Object { Write-Host $_ }
最后,脚本输出一行文本 “Reachable Machines:”,并使用 ForEach-Object
遍历可达机器数组 $reachableMachines
,逐一输出每个可达机器的名称。
这段 PowerShell 脚本通过简单的结构和命令,展示了如何有效地检查一组机器的网络可达性。它不仅适用于网络管理员排查网络故障,也可以作为学习 PowerShell 基础的一个良好示例。通过适当修改机器名称和域名后缀,用户可以根据自己的需求扩展该脚本的功能。
🏆 每日挑战:你知道答案吗?
如何在 Python 中检查变量的类型?
文章链接:https://www.lilianhua.com/check-network-reachability-using-powershell.html