function Out-WordWrap { [CmdletBinding()] [OutputType([string])] Param ( [Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=0)] [string] $Text, [Parameter(Mandatory=$false, Position=1)] [ValidateRange(16,160)] [int] $Width = 80 ) Begin { function New-WordWrap ([string]$Text, [int]$Width) { [string[]]$words = $Text.Split() [string]$output = "" [int]$remaining = $Width foreach ($word in $words) { if($word.Length + 1 -gt $remaining) { $output += "`n$word " $remaining = $Width - ($word.Length + 1) } else { $output += "$word " $remaining -= $word.Length + 1 } } return "$output`n" } } Process { foreach ($paragraph in $Text) { New-WordWrap -Text $paragraph -Width $Width } } }