问题描述
我想设置一个脚本以自动运行,该脚本将通过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的内容,我真的很想得到一些帮助/建议。
我们非常感谢您的帮助。
解决方法
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!"
}
}
通常,我会在循环之前先过滤一个集合。这样可以最大程度地减少循环中的迭代次数。