PowerShell技术问题:如何检查CSV文件中是否存在指定值
检查CSV文件中是否存在指定值的正确方法
你当前代码返回false的核心原因是:直接读取的CSV数据是对象数组,每个元素对应CSV的一行,包含各列的键值对,并非单纯的字符串数组,所以$PCname -in $logFileLocation无法匹配到目标值。
正确的处理步骤如下:
- 确定CSV中存储目标值的列名(比如你的CSV里电脑名对应的列标题是
PCName,需替换为实际列名) - 读取CSV后提取该列的所有值,得到纯字符串数组
- 再用
-in或-contains进行存在性检查
示例代码
# 读取CSV文件,替换为你的实际文件路径 $csvData = Import-Csv -Path "C:\example\your_file.csv" # 提取目标列的所有值,将PCName替换为CSV中对应的列标题 $targetValues = $csvData | Select-Object -ExpandProperty PCName # 检查指定字符串是否存在 if ($PCname -in $targetValues) { Write-Output "true" } else { Write-Output "false" }
注意事项
- 如果列名包含空格或特殊字符,需用引号包裹,例如:
-ExpandProperty "Computer Name" - 也可以简化为一行代码:
if ($PCname -in (Import-Csv "C:\example\your_file.csv").PCName) { Write-Output "true" } else { Write-Output "false" }
内容的提问来源于stack exchange,提问作者wastingLifeAway
相关产品推荐
相关产品推荐

