使用Test-NetConnection进行连接故障排除

在 PowerShell Test-NetConnection 命令行工具出现之前,我们有许多不同的命令行工具可供选择,用于解决各种网络连接问题。

我们有 ping 用于测试 ICMP 回显和回复;tracert 用于查看我们的数据包可能被丢弃的位置;nslookup 用于执行 DNS 查询以针对我们的 DNS 服务器;telnet 用于检查开放的 TCP 端口,以及其他各种工具。什么都有对应的工具。

随着在 Windows 8.1 和 Windows Server 2012 R2 上引入 PowerShell v4,这种单一任务对应单一工具的方法已经过时。

让我向您介绍一下新的、全能的 Test-NetConnection 命令行工具。将 PowerShell Test-NetConnection 想象成 ping、tracert、nslookup、telnet 和其他一些工具的集合,汇聚成一个解决问题的套件。

使用 Test-NetConnection 进行故障排除

让我们看看我们可以使用 Powershell test-netconnection 命令行工具做些什么,并了解当我们不幸处于解决网络连接问题的位置时该如何使用它。

为了演示这一点,我将使用PowerShell Test-NetConnection 来排除一个常见的真实世界问题:“我无法访问XYZ网站!”

大多数用户不知道的是,成功在浏览器中渲染网站本身就是一个了不起的壮举,考虑到必须共同运作的各种要素的数量。至少,该过程包括:

  • 拥有互联网连接。
  • 拥有通往DNS服务器的路由。
  • 联系DNS服务器以解析URL。
  • 拥有通往URL解析出的IP地址的路由。
  • 拥有TCP端口80的开放。
  • 等等,等等。

确认您的互联网连接

要开始排除故障,您首先需要确认您是否拥有互联网连接。您可以通过简单运行没有任何参数的PowerShell Test-NetConnection 来执行此操作。但是,如果您想获得更多信息,我建议使用InformationLevel 参数和Detailed 参数。

Test-NetConnection -InformationLevel Detailed

这个简单的命令检查您的本地连接和互联网连接,并确认您的DNS客户端可以一次性解析指向您的DNS服务器的名称。将其视为网络连接的一般健康检查。这个命令一次性检查了渲染网站所需的五个过程中的三个!

使用Test-NetConnection测试您与网站主机的连接

我们现在需要将我们的故障排除指向所讨论的网站主机。让我们以google.com为例。您也可以使用远程计算机。

我们可以使用Test-NetConnection命令和ComputerName参数来同时确保网站主机可以在DNS中解析,有一个可用的TCP路由来到达名称解析到的IP地址,并且可以ping通。

Test-NetConnection -ComputerName google.com

尽管这一步在技术上验证了我们有一条到达google.com网页服务器的路由,但我想要找到更详细的关于我的数据包通过哪些路由器流经到达google.com网页服务器的信息。为了做到这一点,我将使用TraceRoute参数来获取一个列表。

Test-NetConnection -ComputerName google.com -TraceRoute

确保您的TCP端口是打开的

我们的最后一项测试是确保我们期望的Web服务器运行的TCP端口是打开的。在这种情况下,由于我们只是指定google.com,我将假设它是TCP端口80。为此,我们只需向Test-NetConnection添加另一个参数即可。因为Test-NetConnection了解几种不同服务的标准TCP端口,我们甚至不需要知道端口号。我只需将HTTP传递给CommonTCPPort参数,它就会为我完成工作。

Test-NetConnection -ComputerName google.com -CommonTCPPort HTTP

但是,如果网站可能在不同的端口下运行,例如8080,您可以直接使用Port参数指定TCP端口。

Test-NetConnection -ComputerName google.com -Port 80

我们现在已经测试了本文开头列出的每个连接要求。如果我们在这个时候仍然无法呈现网站,我们已经确认问题不在于我们的客户,我们可以将问题传递给谷歌或者下游的 DNS 服务器。

Source:
https://adamtheautomator.com/test-netconnection/