You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell根据desktops.txt匹配规则修改CSV文件Wifi字段值的方法

原代码存在的问题

  • 判断条件永远不成立:Select-String返回的是匹配结果对象而非布尔值$True,因此$SEL -eq $True的判断永远为假,修改逻辑从未触发。
  • 循环逻辑错误覆盖结果:外层循环遍历设备名单时,每次都基于原始CSV重新生成$NewCSV,前几次遍历的修改结果会被后一次完全覆盖,最终只有最后一个设备(machine5)的遍历结果生效,而machine5不存在于CSV中,自然无修改。
  • 大小写匹配隐患:CSV中Machine字段值为Machine1(首字母大写),设备名单中为machine1(全小写),如果开启严格大小写匹配会导致匹配失败。
  • 逻辑冗余低效:每次循环都重复读取desktops.txt查询、重复遍历全量CSV,无意义消耗性能。

修正后的可运行代码

# 预加载设备名单,统一转为小写避免大小写匹配问题
$desktopList = (Get-Content .\desktops.txt).ToLower()
# 读取源CSV文件
$ImportedCSV = Import-CSV data.csv

# 单次遍历所有CSV行完成修改
$NewCSV = Foreach ($Entry in $ImportedCsv) {
    if ($desktopList.Contains($Entry.Machine.Trim().ToLower()) -and $Entry.Wifi -eq 'Connected') {
        $Entry.Wifi = 'Connected*'
    }
    $Entry
}

# 导出结果,指定UTF8编码避免乱码
$NewCSV | Export-CSV data2.csv -NoTypeInformation -Encoding UTF8

输出结果验证

运行后生成的data2.csv完全符合预期:

Name,Machine,Model,Wifi
User1,Machine1,Dell Lattitude,Connected*
User2,Machine2,Dell Lattitude,disconnected
User3,Machine3,Dell Lattitude,Connected

内容的提问来源于stack exchange,提问作者Johnny Cakes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 03:39:02