Formatting output

This topic contains 3 replies, has 3 voices, and was last updated by Profile photo of Jarek C. Jarek C. 11 months, 3 weeks ago.

  • Author
  • #37050
    Profile photo of Jarek C.
    Jarek C.

    My script makes multiple checks on remote machines like whether certain services are running, tasks are enabled, settings are set, groups exist. This time I would need to create some sort of report of the output rather than just display it on my screen . The output is of variable length hence difficult to format in a csv. Possibly html would be better as on consecutive runs I'll be only looking for deltas. My question is do I need to follow every line with something like convertto-html | out-file or is there a better way to consolidate the output and then pass it to out-file in the last step?

  • #37052
    Profile photo of David Senior
    David Senior

    Gather all of your output in an array and then pipe your array to the ConvertTo-htlm

    Simple example

    $Arr = New-Object -TypeName System.Collections.Arraylist
    Get-Service | foreach {$Arr.Add($_)} | Out-Null
    Get-Process | foreach {$Arr.Add($_)} | Out-Null
    $Arr | ConvertTo-Html | Out-File -FilePath $home\Documents\Report.html
  • #37055
    Profile photo of Don Jones
    Don Jones

    Have a look at our HTML Reporting ebook, from the Resources menu here. It covers doing some fairly complex, multi-part reports.

    I'll disagree with David on the array – an array is a poor way to do this, and gets slower the larger you make the array. Outputting custom objects to the pipeline, in a modular, function-based approach (which is how the ebook proceeds) is a much more PowerShell-native pattern.

  • #37099
    Profile photo of Jarek C.
    Jarek C.

    HTML reporting, Networking Guide, Error handling and even DSC... wow! Funny I never checked that section. Thanks for pointing me there although the wife won't be happy I'll skip a couple of weekends out 😉

You must be logged in to reply to this topic.