$Printers = Get-Printer $PrintersMetrics = New-Object -TypeName 'System.Collections.ArrayList' $allFailedTasks = 0 foreach ($printer in $Printers) { $printerMetric = New-Object -TypeName PSObject $printerMetric | Add-Member -MemberType NoteProperty -Name name -Value $printer.Name.ToString() $printerMetric | Add-Member -MemberType NoteProperty -Name computername -Value $env:COMPUTERNAME $printerMetric | Add-Member -MemberType NoteProperty -Name type -Value $printer.Type.ToString() $printerMetric | Add-Member -MemberType NoteProperty -Name driver_name -Value $printer.DriverName.ToString() $printerMetric | Add-Member -MemberType NoteProperty -Name port_name -Value $printer.PortName.ToString() $printerMetric | Add-Member -MemberType NoteProperty -Name shared -Value $printer.Shared.ToString() $printerMetric | Add-Member -MemberType NoteProperty -Name published -Value $printer.Published.ToString() $i = $PrintersMetrics.Add($printerMetric) } $Metric = New-Object -TypeName PSObject $Metric | Add-Member -MemberType NoteProperty -Name jobs -Value $PrintersMetrics Write-Host "<-Start Metrics->" $Metric | ConvertTo-Json -Depth 4 Write-Host "<-End Metrics->" if ($allFailedTasks -gt 0) { exit 1 } else { Write-Host "<-Start Status->" Write-Host "OK" Write-Host "<-End Status->" exit 0 }