带循环的 powershell ping 不 return StatusCode

powershell ping with loop does not return StatusCode

Windows7 上的 Powershell 4.0 我的 IP 地址是 192.168.0.102,它确实从 cmd 提示符回复 ping。

我正在尝试 运行 以下代码,但效果不佳:

[int]$intPing = 4
[string]$intNetwork = "192.168.0.102"

for ($i=1;$i -le $intPing; $i++)
{
$strQuery = "select * from win32_pingstatus where address = '" + $intNetwork + $i + "'"
    $wmi = get-wmiobject -query $strQuery
    #"Pinging $intNetwork attempt $i..."
    "Pinging $intNetwork $i ... "
    if ($wmi.statuscode -eq 0)
        {"success"}
    else
        {"error: " + $wmi.StatusCode}

这是我在书中找到的示例,但由于某种原因无法正常工作。 通过提供我的 IP,它会打印错误,但不会 return 错误代码。如果我使用错误的 IP 地址,也会出现没有错误代码的相同问题。如果我使用 127.0.0.1,它 return 是 "success"。如果我删除与循环相关的内容,它就可以正常工作。

目的是了解如何使用 "for" 进行循环,因此我对执行此操作的最佳方法不太感兴趣。我有兴趣尝试按原样保留此代码,以便我可以从中学习。

那我做错了什么?我该如何解决?

尝试改变这个

$strQuery = "select * from win32_pingstatus where address = '" + $intNetwork + $i + "'"

至此

$strQuery = "select * from win32_pingstatus where address = '$intNetwork'"

原件包含增量编号,这导致您的所有 ping 都失败。