Looks good now… so much thanks
$RegexKB = '\([^A-Z]\d{6,8}|KB\d{6,8}\)'
$record = $null
$RawData = Get-Content .\cimc.txt
For ($i=0; $i -lt ($RawData.count); $i++) {
Switch ($RawData[$i])
{
"Hostname:"
{
If ($RawData[$i+1] -ne 'IP:')
{
If ($record) {
If ($record.Hostname -and $record.KBs) {
$record
}
$record = [PSCustomObject]@{
Hostname = if ($RawData[$i+1] -match "^dyn[0-9-]") {
(($RawData[$i+1].TrimStart('dyn--') -split '\.')[0]) -replace '--','.';
} else {
($RawData[$i+1] -split '\.')[0]
}
KBs = @()
}
} Else {
$record = [PSCustomObject]@{
Hostname = if ($RawData[$i+1] -match "^dyn[0-9-]") {
(($RawData[$i+1].TrimStart('dyn--') -split '\.')[0]) -replace '--','.';
} else {
($RawData[$i+1] -split '\.')[0]
}
KBs = @()
}
}
} Else {
$record = $null
}
}#Hostname:
default {
If ($RawData[$i] -match $RegexKB) {
#replace all characters that are not numerical with nothing, prefix it with KB, and add it to the array
$record.KBs += @("KB$($RawData[$i] -replace '[^\d]')")
}
}#default
}#switch
}#for
If ($record.Hostname -and $record.KBs) {
$record
}
gives
Hostname KBs
-------- ---
174.59.10.178 {KB3017349, KB3057181, KB3058985, KB3033857}
174.59.10.189 {KB3042553, KB3042553, KB2722479, KB3011443...}
svrad01 {KB3000483, KB3041836, KB3032323, KB3046306...}
174.59.10.131 {KB3042553, KB3011443, KB3000483, KB3046306...}
svrcitrix {KB3042553, KB3042553, KB2500212, KB2962486...}
174.59.10.153 {KB3042553, KB3011443, KB3011780, KB3017349...}
174.59.10.159 {KB3042553, KB3011443, KB3000483, KB3046306...}
174.59.10.165 {KB3042553, KB3011443, KB3000483, KB3046306...}
174.59.10.190 {KB3042553, KB3011443, KB3000483, KB3046306...}
174.59.10.139 {KB3042553, KB3011443, KB3000483, KB3046306...}
174.59.10.149 {KB3042553, KB3000483, KB3046306, KB3049576...}
174.59.10.111 {KB3042553, KB3011443, KB3000483, KB3046306...}
174.59.10.174 {KB3042553, KB3042553, KB3000483, KB3046306...}
174.59.10.129 {KB3042553, KB3000483, KB3046306, KB3049576...}
174.59.10.129 {KB3042553, KB2500212, KB3011443, KB3000483...}
174.59.10.125 {KB3042553, KB2500212, KB3011443, KB3000483...}
174.59.10.172 {KB3042553, KB3000483, KB3046306, KB3049576...}
174.59.10.137 {KB3042553, KB3011443, KB3000483, KB3046306...}
svrfile02 {KB3042553, KB3042553, KB3000483, KB3041836...}
svrarchive {KB3000483, KB3041836, KB3032323, KB3046306...}
174.59.10.107 {KB2500212, KB3000483}
webmail {KB3042553, KB3042553, KB3000483, KB3041836...}
174.59.10.150 {KB3042553, KB3000483, KB3046306, KB3049576...}
174.59.10.101 {KB3042553, KB3000483, KB3046306, KB3049576...}
174.59.10.198 {KB3042553, KB3011443, KB3000483, KB3046306...}
printer4 {KB3000414, KB2992611, KB3042553, KB2500212...}
174.59.10.145 {KB3042553, KB3011780, KB3017349, KB3021674...}
174.59.10.195 {KB3042553, KB3000483, KB3046306, KB3049576...}
174.59.10.155 {KB3042553, KB3000483, KB3046306, KB3049576...}
174.59.10.186 {KB3042553, KB3011443, KB3000483, KB3046306...}
tradedev {KB3042553, KB2962486, KB3000483, KB3041836...}
svrdev {KB3042553, KB3000483, KB3041836, KB3032323...}
invest--serv {KB3042553, KB3042553, KB3000483, KB3041836...}
174.59.10.192 {KB3042553, KB3042553, KB3000483, KB3041836...}
svrproddb {KB3042553, KB3042553, KB3000483, KB3041836...}
connect4 {KB3042553, KB3000483, KB3041836, KB3032323...}
svrprodws {KB3042553, KB3000483, KB3041836, KB3032323...}
174.59.10.191 {KB3042553, KB3000483, KB3041836, KB3032323...}
printer6 {KB3042553, KB3000483, KB3041836, KB3032323...}