我有全域陣列串列“$global:processid”,它有許多 processid-entries 和 $globale:processname,它包含屬于 id 的所有行程。有時 $global:processid arraylist 得到的所有條目都是相同的。我如何遍歷兩個陣列串列并洗掉所有重復的行程 ID 和行程名稱。我現在得到了以下代碼。但我沒有這個過濾。[System.Collections.ArrayList]$global:processname = @() [System.Collections.ArrayList]$global:processid = @()
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)
}
重要的是,它將檢查重復的 processid 并洗掉該位置的 processnae。例如,如果位置 3-7 是 $global:processid 陣列串列中的相同條目,則陣列串列 $global:processname 中位置 3-7 的所有條目也應該被洗掉。
我希望你明白我的意思。感謝您的幫助。
uj5u.com熱心網友回復:
盡管正如評論的那樣,最好使用一個包含objects的陣列,但您仍然可以使用兩個陣列串列創建這樣一個陣列,只要它們仍然完好無損并且每個索引都可以為您提供 id 和匹配的行程名稱
假設你的陣列是這樣的:
$processid = 123, 456, 123
$processname = 'notepad', 'powershell', 'notepad'
如您所見,那里有一個副本
加入這些陣列,同時它們的索引仍然與名稱和 ID 匹配到一個物件陣列中
$processes = for ($i = 0; $i -lt $processid.Count; $i ) {
[PsCustomObject]@{ Id = $processid[$i]; Name = $processname[$i] }
}
現在您可以根據 ID 屬性消除重復物件
$processes | Sort-Object -Property Id -Unique
$processes 現在包含:
ID Name
-- ----
123 notepad
456 powershell
接下來,填寫您的串列視圖
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)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418476.html
標籤:
