Send objects to the host as a series of strings.

      Out-String [-inputObject psobject] [-width int]
            [-stream] [CommonParameters]
   -inputObject psobject
       The object to be written to file. {may be piped}
       A command, expression or variable that contains the objects.

   -width int
       The number of characters in each line of output. 
       Any additional characters are truncated, not wrapped.
       The default is determined by the host, for PowerShell.exe
       this is 80 (characters).
       Send the strings for each object separately. 
       By default, the strings for each object are accumulated
       and sent as a single string.

       -Verbose, -Debug, -ErrorAction, -ErrorVariable, -WarningAction, -WarningVariable,
       -OutBuffer -OutVariable.

Out-String enables searching and manipulating string output as you would in traditional shells where object manipulation is less convenient than in PowerShell.

The final part of displaying PowerShell output is a hidden background call to an Output cmdlet, by default as the last part of the execution process PowerShell calls the default output cmdlet which is typically Out-Host.


Converting to base64, allows representing a unicode string as an ASCII compatible string (for obfuscation or ease of export). There is no built in cmdlet for this but we can call the a .Net method ToBase64String:

$text = 'Hello World' 
$result = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($text), 'InsertLineBreaks')

# To reverse the above:
$base64 = 'SABlAGwAbABvACAAVwBvAHIAbABkAA=='
$text = [Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($base64))


Send the content of Test1.txt to the console as a single string:

PS C:\> get-content C:\docs\test1.txt | out-string

Get the regional settings for the current user and convert the data to strings:

PS C:\> $cult = get-culture | select-object *
out-string -inputobject $cult -width 100

Display all aliases that include the phrase "Get-"

PS C:\> get-alias | out-string -stream | select-string "Get-"

Piping into Select-String demonstrates the difference between working with objects and working with strings. The -stream parameter sends each string individually, as without this Select-String would simply match and return the entire single string containing all of the aliases.

#Brown paper packages tied up with strings, these are a few of my favorite things# ~ Oscar Hammerstein III


Out-Default - Send output to default
Out-File - Send command output to a file
Out-Host - Send the pipelined output to the host
Out-Null - Send output to null
Out-Printer - Send the output to a printer
Tee-Object - Send input objects to two places
Equivalent bash command: redirection - Redirection and Process Substitution

Copyright © SS64.com 1999-2017
Some rights reserved