Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Retaining newlines in PowerShell string

In a PowerShell script, I'm capturing the string output of an EXE file in a variable, then concatenating it with some other text to build an email body.

However, when I do this I find that the newlines in the output are reduced to spaces, making the total output unreadable.

# Works fine
.\other.exe

# Works fine
echo .\other.exe

# Works fine
$msg = other.exe
echo $msg

# Doesn't work -- newlines replaced with spaces
$msg = "Output of other.exe: " + (.\other.exe)

Why is this happening, and how can I fix it?

like image 513
JSBձոգչ Avatar asked Dec 13 '10 17:12

JSBձոգչ


1 Answers

Or you could simply set $OFS like so:

PS> $msg = 'a','b','c'
PS> "hi $msg"
hi a b c
PS> $OFS = "`r`n"
PS> "hi $msg"
hi a
b
c

From man about_preference_variables:

Output Field Separator. Specifies the character that separates the elements of an array when the array is converted to a string.

like image 108
Keith Hill Avatar answered Oct 10 '22 08:10

Keith Hill