implemented try catch blocks on adding to hashmap to allow graceful handling of exceptions

This commit is contained in:
Karl-Wilfried Zimmer 2024-02-08 22:54:01 +01:00
parent 82df61e07a
commit a71cf2f949

View File

@ -37,32 +37,53 @@ function ProduceHashMap {
$Elements $Elements
) )
$HashTable =@{} $HashTable =@{}
foreach ($elem in $Elements){ foreach ($elem in $Elements){
$indexOfFirst = $elem.IndexOf(" ") $indexOfFirst = $elem.IndexOf(" ")
if($indexOfFirst -le 0){ if($indexOfFirst -le 0){
continue continue
} }
$date = $elem.SubString(0,$elem.IndexOf(" ",($indexOfFirst + 1))) $date = $elem.SubString(0,$elem.IndexOf(" ",($indexOfFirst + 1)))
$timeStamp = ConvertDate($date) $rest = $elem.Substring($elem.IndexOf(" ",($indexOfFirst + 1))+1)
$rest = $elem.Substring($elem.IndexOf(" ",($indexOfFirst + 1))+1) $vmName = GetVMName($rest)
$vmName = GetVMName($rest) $backUpState = DeterminState($rest)
$backUpState = DeterminState($rest) $timeStamp
if($HashTable.ContainsKey($vmName)){
if($HashTable.ContainsKey($vmName)){ $array = $HashTable[$vmName]
$array = $HashTable[$vmName] try {
$array += New-Object psobject -Property @{ $timeStamp = ConvertDate($date)
state = $backUpState $array += New-Object psobject -Property @{
ts = $timeStamp state = $backUpState
ts = $timeStamp
}
}
catch {
foreach ($i in (($array.Count-1)..0)){
Write-Host $array[$i]
if ($array[$i]["state"] -eq 'Started') {
Write-Host "found started"
$timeStamp = $array[$i]['ts']
}
}
$array += New-Object psobject -Property @{
state = $backUpState
ts = $timeStamp
}
}
$HashTable[$vmName]=$array
} else {
try {
$timeStamp = ConvertDate($date)
$HashTable += @{$vmName=@(New-Object psobject -Property @{
state = $backUpState
ts = $timeStamp
})}
}
catch {
<#Do nothing as key is empty and failed state#>
}
} }
$HashTable[$vmName]=$array
} else{
$HashTable += @{$vmName=@(New-Object psobject -Property @{
state = $backUpState
ts = $timeStamp
})}
} }
} return $HashTable
$HashTable
} }
function getElems { function getElems {