【发布时间】:2018-02-25 02:18:26
【问题描述】:
我正在尝试从 2 个查询的输出中删除重复项并仅保留唯一条目。
我正在使用以下内容提取已安装的 Windows 更新列表(同时去除 12 个字符的空格并降为小写:
$A = @(Get-HotFix | select-object @{Expression={$_.HotFixID.ToLower()}} | ft -hidetableheaders | Out-String) -replace '\s{12}',''
然后我查询文件夹中可用文件的列表并使用以下方法去除 3 个尾随空白字符:
$B = @(Get-ChildItem D:\y | select-object 'Name' | ft -hidetableheaders | Out-String) -replace '\s{3}',''
我遇到的问题是第一个查询 ($A) 返回如下输出:
kb4040981
kb4041693
kb2345678
kb8765432
而第二个查询 ($B) 返回如下输出:
windows8.1-kb4040981-x64_d1eb05bc8c55c7632779086079c7759f40d7386f.cab
windows8.1-kb4041687-x64_3bdf264bcfc0dda01c2eaf2135e322d2d6ce6c64.cab
windows8.1-kb4041693-x64_359b7ac71a48e5af003d67e3e4b80120a2f5b570.cab
windows8.1-kb4049179-x64_e6ec21d5d16fa6d8ff890c0c6042c2ba38a1f7c4.cab
我需要在 $A 数组中的每个条目周围使用通配符来比较 2 个输出(我认为),并且它存在于 $B 中的位置从 $B 数组中删除整行。
我无法截断 $B 的输出,因为我需要在后续过程中使用完整的文件名。
在上面的示例输出中,整个 FIRST 和 THIRD 行将从 $B 数组中删除,其他行保持不变。
我尝试了很多在线搜索的方法,并使用了 foreach 循环,但都无济于事。
提前感谢您的帮助。
【问题讨论】:
标签: arrays powershell duplicates wildcard