【发布时间】:2022-11-24 05:15:16
【问题描述】:
我有与重复相关的问题。 假设我有这段检查 exe 文件的代码:
$listOfFiles=(Get-ChildItem -Path 'C:\test' -Include "*.exe" -recurse | ForEach-Object {$_.FullName})
$paths_regex = "\\[^\\]+$"
$urls_regex = "(http:\/\/|https:\/\/)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?"
[void]$table.Columns.Add("Paths")
[void]$table.Columns.Add("Urls")
$table = New-Object System.Data.Datatable
Foreach($file in $listOfFiles)
{
$paths = ""
$urls = ""
strings.exe -n 10 $file | %{ $results += $_+" " }
[regex]::match($results, $paths_regex).Value | %{ $paths += $_+" " }
[regex]::match($results, $urls_regex).Value | %{ $urls += $_+" " }
$pathsNew = ($paths -split ' ' | Select-Object -Unique) -join ' '
$urlsNew = ($urls -split ' ' | Select-Object -Unique) -join ' '
[void]$table.Rows.Add($pathsNew, $urlsNew)
}
有谁知道如何从 $paths 中的 $urls 中删除重复项? 可能我必须将文本拆分为单词并以某种方式进行比较以删除重复项。
谢谢
【问题讨论】:
-
我之前对
$urls.Where{$_ -notin $paths}的建议对你不起作用吗?如果没有,您能否发布一个示例说明这 2 个变量可能包含的内容? -
您能否添加示例输入以及
$paths_regex和$urls_regex的值,以便我们可以复制粘贴并自行尝试?我不清楚为什么您的某些网址也是路径。也许可以改进 RegEx 以避免首先出现重复。 -
@AbrahamZinala 这不起作用,因为
-notin需要收藏对于 RHS 参数,但在本例中 RHS 是一个字符串。 -
嘿,它没有用,我只是更新了我的代码以获得更清晰的视图。
标签: powershell