如何在PowerShell中实现类似Excel VLOOKUP的对象属性匹配功能
PowerShell实现方案
核心逻辑是先将CSV导入结果预转为以FullName为键的查找哈希表,匹配时可直接O(1)读取,性能远高于逐次遍历CSV匹配。
完整实现代码
# 步骤1:导入CSV并构建查找哈希表 $heightLookup = @{} Import-Csv -Path "替换为你的CSV文件实际路径" | ForEach-Object { # 可选添加Trim()处理CSV字段首尾多余空格,不需要可删除 $heightLookup[$_.FullName.Trim()] = $_.Height } # 步骤2:遍历目录生成目标结构 $outputCollection = Get-ChildItem -Path "替换为你要扫描的目标目录路径" -File | ForEach-Object { # 此处生成哈希表,如需转为PS对象可在@{}前加[PSCustomObject]修饰 @{ FullName = $_.FullName Extension = $_.Extension Height = $heightLookup.ContainsKey($_.FullName) ? $heightLookup[$_.FullName] : $null # 可自行补充其他需要提取的Get-ChildItem返回属性 } }
可选调整说明
- 若匹配不到对应FullName的Height值,当前默认赋值为
$null,可自行替换为自定义默认值(如"无匹配数据") - 若需要同时扫描子目录,可在
Get-ChildItem参数中添加-Recurse - 若要生成可直接导出/格式化的结构化对象,将
@{修改为[PSCustomObject]@{即可
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

