Add Custom Output to Windows PowerShell GridView

Add Custom Output to Windows PowerShell GridView

Q: I have a custom set of data I am creating in Windows PowerShell that I want to use with normal PowerShell formatting, such as format-table and Out-GridView--how can I do this?

A: I recently created a PowerShell script to list and execute System Center 2012 Orchestrator runbooks. However, when fetching the runbooks, I had to parse through an array and extract certain elements, for example:

foreach ($runbook in $output.feed.entry)
    Write-Output "Name:" $
    Write-Output "ID:" $
    Write-Output "IsMonitor:" $

The problem is this can't be piped to other formatting type commands or anything else. The solution is to instead create a hash table which can consist of a structured array of named values, and then this hash table can then be piped and used as a regular set of PowerShell objects.

First an empty hash table is created:

$OutData [email protected]() # Build structure for the results

Then for each object that should be added (with each object consisting of a number of attributes) a generic PSObject is created with members added with a Name and Value. For example:

# Output properties of each job in page to host        
foreach ($runbook in $output.feed.entry)        
{          $RunbookDetail = New-Object PSObject          $RunbookDetail | Add-Member -Name "Name" -MemberType NoteProperty -Value $          $RunbookDetail | Add-Member -Name "ID" -MemberType NoteProperty -Value $          $RunbookDetail | Add-Member -Name "IsMonitor" -MemberType NoteProperty -Value $          $OutData += $RunbookDetail        

The content of OutData can be piped to any standard PowerShell cmdlet including Format-Table, Out-GridView and more. For example:

The output is shown below.

Hide comments


  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.