powershell ping with loop不返回StatusCode

时间:2015-05-19 20:24:28

标签: powershell for-loop ping

Windows 7上的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它会输出错误,但不会返回错误代码。如果我使用错误的IP地址,则会出现没有错误代码的相同问题。如果我使用127.0.0.1,则返回"成功"。如果我删除与循环相关的东西,它可以正常工作。

目的是了解使用" for"的循环,因此我对最佳方法不太感兴趣。我有兴趣尝试保留这些代码,以便我可以从中学习。

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

1 个答案:

答案 0 :(得分:1)

尝试更改此

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

到这个

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

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