Fundamentally, a batch variable can only contain a single string, so you need to put your data into many variables. There are many ways to do this, documented on SO through thousands of examples.
To devise a way to suit you, we would need to know more about the data that your powersmell application produces.
Two common ways are
FOR /f "tokens=1* delims=:" %b IN ('somecommandwithtextoutput^|findstr /n /R ".*" ""') DO SET "$%b$=%c"&SET /a $0=%b
FOR /f "tokens=1* delims=][" %b IN ('somecommandwithtextoutput^|find /v /n ""') DO SET "$%b$=%c"&SET /a $0=%b
These exploit the delimiters capabilities of for /f by finding and parsing the strings produced. The ^| is an escaped-pipe to deliver the text to the find utility chosen. The first uses /n to prefix the lines found with number: the second with [number]. the set thus produces environment variables named $1=first line $2=second line, etc and $0=line count
The choice of $ is arbitrary - it can be any valid variablename.
set $
can be used to display the variables set.
Processing beyon that is another issue completely, and will also involve understanding of the effects of "Poison characters" (those with special meaning to the batch language, such as !%~&^())