Foreach /如果使用CSV文件

问题描述

我想设置一个脚本以自动运行,该脚本将通过CSV文件读取,并在WAN1状态失败等情况下通知我们。

请参见下面的基本脚本:

“ $ merakicsv = Import-Csv'C:\ Python \ Scripts \ 2020-08-11.csv'

$ merakiselectedcsv = $ merakicsv |选择“网络”,“ WAN1状态”,“ WAN2状态”

$ merakiselectedcsv的输出

网络WAN1状态WAN2状态


NETWORK1失败未连接

NETWORK2 Active未连接

NETWORK3 Active Ready”

我不太清楚如何编写foreach来读取CSV的内容,我真的很想得到一些帮助/建议。

我们非常感谢您的帮助。

解决方法

使用Foreach-Object

Import-Csv 'C:\Python\Scripts\2020-08-11.csv' | Foreach-Object {
    $_ # The current row deserialized into an object with properties
    $_.Network # The current object's Network property value
}

使用foreach

foreach ($row in (Import-Csv 'C:\Python\Scripts\2020-08-11.csv')) {
    $row # The current row deserialized into an object with properties
    $row.Network # The current object's Network property value
}

使用Where-Object进行过滤:

Import-Csv 'C:\Python\Scripts\2020-08-11.csv' |
    Where-Object { $_.'WAN1 Status' -eq 'Failed' } | Foreach-Object {
        $_ # Current row object that has WAN1 Status of Failed
    }

使用if条语句:

$merakicsv = Import-Csv 'C:\Python\Scripts\2020-08-11.csv'
foreach ($row in $merakicsv) {
    if ($row.'WAN1 Status' -eq 'Active'){
        "$($row.Network) is Active!"
    } else {
        "$($row.Network) is not Active!"
    }
}

通常,我会在循环之前先过滤一个集合。这样可以最大程度地减少循环中的迭代次数。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...