如何在powershell中迭代“对于每个具有值的对象”

时间:2014-01-28 01:20:16

标签: powershell wmi powershell-v4.0

我正在使用gwmi在系统上返回大量不同的信息。我使用以下命令获取网络信息:

$networkInfo = gwmi win32_networkadapterconfiguration 

返回一组网络适配器及其信息。由于我不介绍许多网络适配器,如何过滤掉“坏”的?我想我只需要获得具有IPv4地址的那些,但我该如何指定?

我是否必须在for循环中使用if嵌套,还是有更快的方法?

psuedo代码:

for ($i=0; $i -lt $networkInfo[$i].length; $i++){
    if($networkInfo[$i].IPAddress has a value){
        #do stuff
    }
}

1 个答案:

答案 0 :(得分:6)

正如评论中提到的,您可以使用Where-Object命令过滤管道中的结果。对于您的特定需求,这应该有效:

gwmi win32_networkadapterconfiguration | where IPAddress -NE $NULL