如何对比两组Web应用配置键数组并输出缺失的配置项?
解决PowerShell数组差异对比问题
方法1:使用Compare-Object精准过滤
你之前用Compare-Object没得到预期结果,大概率是没筛选仅存在于$complete的元素。试试下面的写法:
$complete = @("A", "B", "C", "D") $incomplete = @("C", "D") # 找出仅在$complete中存在的配置项 Compare-Object -ReferenceObject $complete -DifferenceObject $incomplete | Where-Object { $_.SideIndicator -eq '<=' } | Select-Object -ExpandProperty InputObject
SideIndicator的<=代表元素仅存在于作为参考对象的$complete中,最终会输出A、B。
方法2:用Where-Object结合-notcontains
这是更简洁的写法,直接遍历$complete,筛选不在$incomplete里的元素:
$complete | Where-Object { $incomplete -notcontains $_ }
注意PowerShell里没有Where-NotContains这个直接命令,必须用Where-Object配合-notcontains运算符来实现反向判断。
这两种方法都能直接在PowerShell中完成对比,比导出到Excel用VLOOKUP高效得多,无需额外切换工具。
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

