可以使用 Win32_PingStatus 对计算机执行简单的 Ping 操作。 下面的命令执行 Ping 操作,但返回冗长的输出:

PS C:\Users\maxsu> Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'"

Source        Destination     IPV4Address      IPV6Address                              Bytes    Time(ms)
------        -----------     -----------      -----------                              -----    --------
              127.0.0.1       192.168.1.4      fe80::1177:9b56:a80a:62bf%2              32       0

摘要信息是更为有用的形式,它显示下面的命令生成的 Address、ResponseTime 以及 StatusCode 属性。 Format-Table 的 Autosize 参数调整表列的大小,以使其正确显示在 PowerShell 中。

Get-CimInstance -Class Win32_PingStatus -Filter "Address='127.0.0.1'" |
  Format-Table -Property Address,ResponseTime,StatusCode -Autosize

如果 StatusCode 为 0,指明 ping 操作成功。
你可以使用数组借助单个命令对计算机执行 Ping 操作。 由于存在多个地址,因此请使用 ForEach-Object 单独对每个地址执行 Ping 操作:

'127.0.0.1','localhost','research.microsoft.com' |
  ForEach-Object -Process {
    Get-CimInstance -Class Win32_PingStatus -Filter ("Address='$_'") |
      Select-Object -Property Address,ResponseTime,StatusCode
  }

可以使用相同的命令格式对一个子网(例如使用网络号码 (192.168.1.0) 和标准 C 类子网掩码 (255.255.255.0) 的专用网)上的所有计算机执行 Ping 操作。仅在 192.168.1.1 到 192.168.1.254 范围内的地址为合法本地地址(0 始终为网络号码保留,255 是子网广播地址)。
若要在 PowerShell 中表示从 1 到 254 范围内的数字数组,请使用语句 1..254。 可以通过生成数组,然后将值添加到 ping 语句中的部分地址上,执行完整的子网 Ping 操作:

1..254| ForEach-Object -Process {
  Get-CimInstance -Class Win32_PingStatus -Filter ("Address='192.168.1.$_ '") } |
    Select-Object -Property Address,ResponseTime,StatusCode

请注意,这一用于生成一系列地址的方法也可用于其他地方。 你可以使用以下方式生成完整的地址集:

$ips = 1..254 | ForEach-Object -Process {'192.168.1.' + $_}