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

Jef*_*eff 1 powershell wmi powershell-4.0

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

$networkInfo = gwmi win32_networkadapterconfiguration 
Run Code Online (Sandbox Code Playgroud)

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

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

伪代码:

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

Jos*_*osh 6

如注释中所述,您可以使用Where-Object命令过滤管道中的结果.为了您的特定需求,这应该工作:

gwmi win32_networkadapterconfiguration | where IPAddress -NE $NULL
Run Code Online (Sandbox Code Playgroud)