首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell如何消除数组中的冗余

Powershell如何消除数组中的冗余
EN

Stack Overflow用户
提问于 2022-01-19 11:04:48
回答 1查看 26关注 0票数 0

我有全局数组列表"$global:processid",它有许多processid条目,而$globale:processname包含属于ids的所有进程。有时,$global:processid数组获得的所有条目都是相同的。如何循环遍历两个数组列表,删除所有重复的过程和进程名称。我现在有了下面的代码。但我没有这个过滤器。System.Collections.ArrayList$global:processname = @() System.Collections.ArrayList$global:processid = @()

代码语言:javascript
复制
for ($i = 0; $i -lt $global:processid.Count; $i++) {
         "Position "+$i+": "+$global:processid[$i]
         #$lvi = [System.Windows.Forms.ListViewItem]::new()
         #$lvi.Text = $global:processname[$i]
         #$lvi.SubItems.Add($global:processid[$i])
         #$global:ListviewOCLRA.Items.Add($lvi)
}

重要的是,它将检查重复的过程,并删除在这一位置的过程。例如,如果位置3-7在$global:processid数组列表中一次又一次是相同的条目,那么在arraylist $global:processname中位置3-7的所有条目也应该被删除。

我希望你能理解我的意思。来寻求帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-19 13:24:32

尽管如注释所示,最好使用一个包含对象的数组,只要它们仍然完好无损,并且每个索引都可以获得id和匹配的进程名,仍然可以使用两个数组创建这样的数组。

假设您的数组如下:

代码语言:javascript
复制
$processid   = 123, 456, 123
$processname = 'notepad', 'powershell', 'notepad'

就像你看到的,里面有一个副本

将这些数组连接起来,而它们的索引仍然与名称和id匹配到一个对象数组中。

代码语言:javascript
复制
$processes = for ($i = 0; $i -lt $processid.Count; $i++) {
    [PsCustomObject]@{ Id = $processid[$i]; Name = $processname[$i] }
}

现在,您可以根据ID属性消除重复对象

代码语言:javascript
复制
$processes | Sort-Object -Property Id -Unique

$processes现在包含:

代码语言:javascript
复制
 ID Name
 -- ----
123 notepad
456 powershell

接下来,填写您的列表视图。

代码语言:javascript
复制
for ($i = 0; $i -lt $processes.Count; $i++) {
    $lvi = [System.Windows.Forms.ListViewItem]::new()
    $lvi.Text = $processes[$i].Name
    $lvi.SubItems.Add($processes[$i].Id)
    $ListviewOCLRA.Items.Add($lvi)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70769473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档