可以使用 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.' + $_}
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/266817.html