我有一個帶有自定義物件的 Arraylist,想找到“Jobname”相同的所有物件。Group-Object 不能按我想要的方式作業,因為它只計算所有屬性 (10)。我什至開始認為我錯誤地使用了 Arraylist。代碼中物件的創建僅用于測驗,實際上我正在使用回圈來填充我的陣列。
$global:BackupJobObjectArray = New-Object System.Collections.ArrayList
function AddBackupJobFoldertoArray ($jobservername, $backupjobfolder, $backupjobname, $jobmandant, $size, $sizeGB, $sizeTB, $BackupServer, $vbkcount, $lastmodifiedfile)
{
$BackupJobObject = New-Object System.Object
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "Jobname" -Value $backupjobname
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "Mandant" -Value $jobmandant
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "Servername" -Value $jobservername
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "Filepath" -Value $backupjobfolder
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "Size" -Value $size
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "SizeGB" -Value $sizeGB
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "SizeTB" -Value $sizeTB
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "Backupserver" -Value $BackupServer
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "VBKCount" -Value $vbkcount
$BackupJobObject | Add-Member -MemberType NoteProperty -Name "LastModified" -Value $lastmodifiedfile
$global:BackupJobObjectArray.Add($BackupJobObject) | Out-Null
}
AddBackupJobFoldertoArray "server01" "folder01" "jobname01" "mandant01" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server02" "folder02" "jobname02" "mandant01" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server03" "folder03" "jobname03" "mandant01" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server04" "folder04" "jobname04" "mandant01" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server05" "folder05" "jobname05" "mandant01" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server06" "folder06" "jobname06" "mandant02" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server07" "folder07" "jobname07" "mandant02" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server08" "folder08" "jobname08" "mandant02" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server09" "folder09" "jobname09" "mandant02" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server10" "folder10" "jobname10" "mandant02" "1000" "100" "10" "backupserver01" "1" "01.01.2001"
AddBackupJobFoldertoArray "server21" "folder16" "jobname16" "mandant03" "1000" "100" "10" "backupserver03" "1" "01.01.2001"
AddBackupJobFoldertoArray "server22" "folder10" "jobname16" "mandant03" "1000" "100" "10" "backupserver03" "1" "01.01.2001"
AddBackupJobFoldertoArray "server22" "folder03" "jobname16" "mandant03" "1000" "100" "10" "backupserver03" "1" "01.01.2001"
AddBackupJobFoldertoArray "server11" "folder11" "jobname11" "mandant01" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
AddBackupJobFoldertoArray "server12" "folder12" "jobname12" "mandant01" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
AddBackupJobFoldertoArray "server13" "folder13" "jobname13" "mandant01" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
AddBackupJobFoldertoArray "server14" "folder14" "jobname14" "mandant01" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
AddBackupJobFoldertoArray "server15" "folder15" "jobname15" "mandant01" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
AddBackupJobFoldertoArray "server16" "folder16" "jobname16" "mandant02" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
AddBackupJobFoldertoArray "server17" "folder17" "jobname17" "mandant02" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
AddBackupJobFoldertoArray "server18" "folder18" "jobname18" "mandant02" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
AddBackupJobFoldertoArray "server19" "folder19" "jobname19" "mandant02" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
AddBackupJobFoldertoArray "server20" "folder20" "jobname20" "mandant02" "1000" "100" "10" "backupserver02" "1" "01.01.2001"
$global:BackupJobObjectArray | ForEach-Object {$_.psobject.Properties | Group-Object { $_.Jobname } | Format-Table}
uj5u.com熱心網友回復:
使用Script-scoping而不是 Global 應該綽綽有余。
然后$script:BackupJobObjectArray只在函式內部使用,因為無論如何都知道串列之外。
Add-Member您可以直接使用[PsCustomObject]并將其添加到串列中,而不是所有這些行。
最后,如果我正確理解你的問題,你會想根據 JobName 獲得一個表格格式的重復物件串列,你可以像下面那樣做
$BackupJobObjectArray = [System.Collections.Generic.List[object]]::new()
function AddBackupJobFoldertoArray {
param(
[string]$jobservername,
[string]$backupjobfolder,
[string]$backupjobname,
[string]$jobmandant,
[int64]$size,
[int64]$sizeGB,
[int64]$sizeTB,
[string]$BackupServer,
[int]$vbkcount,
[string]$lastmodifiedfile
)
$script:BackupJobObjectArray.Add([PsCustomObject]@{
Jobname = $backupjobname
Mandant = $jobmandant
Servername = $jobservername
Filepath = $backupjobfolder
Size = $size
SizeGB = $sizeGB
SizeTB = $sizeTB
Backupserver = $BackupServer
VBKCount = $vbkcount
LastModified = $lastmodifiedfile
})
}
AddBackupJobFoldertoArray "server01" "folder01" "jobname01" "mandant01" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server02" "folder02" "jobname02" "mandant01" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server03" "folder03" "jobname03" "mandant01" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server04" "folder04" "jobname04" "mandant01" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server05" "folder05" "jobname05" "mandant01" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server06" "folder06" "jobname06" "mandant02" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server07" "folder07" "jobname07" "mandant02" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server08" "folder08" "jobname08" "mandant02" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server09" "folder09" "jobname09" "mandant02" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server10" "folder10" "jobname10" "mandant02" 1000 100 10 "backupserver01" 1 "01.01.2001"
AddBackupJobFoldertoArray "server21" "folder16" "jobname16" "mandant03" 1000 100 10 "backupserver03" 1 "01.01.2001"
AddBackupJobFoldertoArray "server22" "folder10" "jobname16" "mandant03" 1000 100 10 "backupserver03" 1 "01.01.2001"
AddBackupJobFoldertoArray "server22" "folder03" "jobname16" "mandant03" 1000 100 10 "backupserver03" 1 "01.01.2001"
AddBackupJobFoldertoArray "server11" "folder11" "jobname11" "mandant01" 1000 100 10 "backupserver02" 1 "01.01.2001"
AddBackupJobFoldertoArray "server12" "folder12" "jobname12" "mandant01" 1000 100 10 "backupserver02" 1 "01.01.2001"
AddBackupJobFoldertoArray "server13" "folder13" "jobname13" "mandant01" 1000 100 10 "backupserver02" 1 "01.01.2001"
AddBackupJobFoldertoArray "server14" "folder14" "jobname14" "mandant01" 1000 100 10 "backupserver02" 1 "01.01.2001"
AddBackupJobFoldertoArray "server15" "folder15" "jobname15" "mandant01" 1000 100 10 "backupserver02" 1 "01.01.2001"
AddBackupJobFoldertoArray "server16" "folder16" "jobname16" "mandant02" 1000 100 10 "backupserver02" 1 "01.01.2001"
AddBackupJobFoldertoArray "server17" "folder17" "jobname17" "mandant02" 1000 100 10 "backupserver02" 1 "01.01.2001"
AddBackupJobFoldertoArray "server18" "folder18" "jobname18" "mandant02" 1000 100 10 "backupserver02" 1 "01.01.2001"
AddBackupJobFoldertoArray "server19" "folder19" "jobname19" "mandant02" 1000 100 10 "backupserver02" 1 "01.01.2001"
AddBackupJobFoldertoArray "server20" "folder20" "jobname20" "mandant02" 1000 100 10 "backupserver02" 1 "01.01.2001"
($BackupJobObjectArray | Group-Object Jobname | Where-Object { $_.Count -gt 1 }).Group | Format-Table
輸出:
Jobname Mandant Servername Filepath Size SizeGB SizeTB Backupserver VBKCount LastModified
------- ------- ---------- -------- ---- ------ ------ ------------ -------- ------------
jobname16 mandant03 server21 folder16 1000 100 10 backupserver03 1 01.01.2001
jobname16 mandant03 server22 folder10 1000 100 10 backupserver03 1 01.01.2001
jobname16 mandant03 server22 folder03 1000 100 10 backupserver03 1 01.01.2001
jobname16 mandant02 server16 folder16 1000 100 10 backupserver02 1 01.01.2001
我個人會選擇 List 物件,但 ArrayList 也可以。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/348788.html
標籤:电源外壳
