powershell get content from command output

command, external, parsing, powershell

Solution

I put the content into a file `test.txt` and did a try as below:

gc .\test.txt | select-string '.*pool\d+.*' | foreach { $pool = ($_  -split '\s+')[1];write-host $pool;}

And the output:

pool1
pool2
pool3
pool4

In the command line I search the lines which has the pattern as 'pool' followed by digits, and then split it using whitespace as delimiter, then you can get the name 'pool1' etc. to do the things you want.

Problem

i have output from external command, like as: ``` Status Pool name Media Type MS # of media Free [MB] =============================================================================== Good pool1 LTO-Ultrium No 303 298066893 Good pool2 LTO-Ultrium No 1 1525878 Good pool3 LTO-Ultrium No 282 348735361 Good pool4 LTO-Ultrium No 473 588150645 ``` i need parse in PowerShell "pool1", "pool2", "pool3" ... and run command in foreach... any idea for this, without exporting output to xml, csv & etc ? thanks and, Q2, is here same, or similar way for parsing these: ``` Good [QGHL5MMA] QGHL5MMA [pool1: 322] No None Good [QGHL5N2Y] QGHL5N2Y [pool1: 922] No None Good [QGHL5MUL] QGHL5MUL [pool1: 621] No None ``` From this output, i need only text from column 5 ( 322, 922, 621... ). thanks again

Original source