如何用PowerShell筛选CSV指定列的NULL与特定值及排查代码问题
问题排查与解决方案
核心问题
你的代码未返回数据,大概率是判断条件不匹配:CSV里的状态是Revoked,但你代码里写的是-eq "Revoke",少了末尾的"d",导致该条件永远不触发;另外需确认CSV文件路径正确,且Approval列的表头与代码里的拼写完全一致。
修正后的基础版代码
$ListDataCollection = Import-Csv -Path "C:\Temp\FinalListData.csv" $users_to_disable = @() $ListDataCollection | ForEach-Object { if ([string]::IsNullOrEmpty($_.Approval) -or $_.Approval -eq "Revoked") { $users_to_disable += $_.Employee_Name } } $users_to_disable
更简洁的PowerShell风格写法
PowerShell更推荐用管道过滤替代手动循环,代码更简洁高效:
$users_to_disable = Import-Csv -Path "C:\Temp\FinalListData.csv" | Where-Object { [string]::IsNullOrEmpty($_.Approval) -or $_.Approval -eq "Revoked" } | Select-Object -ExpandProperty Employee_Name $users_to_disable
额外验证建议
- 先运行
$ListDataCollection | Format-Table查看导入的数据,确认Approval列的实际值和表头拼写是否正确 - 检查文件路径是否存在,避免因路径错误导致导入空数据
内容的提问来源于stack exchange,提问作者Danny Moulier
相关产品推荐
相关产品推荐

