Echo equivalent in PowerShell for script testing

I would like to output variables and values out in a PowerShell script by setting up flags and seeing the data matriculate throughout the script.

How would I do this?

For example, what would be the PowerShell equivalent to the following PHP code?

echo "filesizecounter: " . $filesizecounter 
1

11 Answers

There are several ways:

Write-Host: Write directly to the console, not included in function/cmdlet output. Allows foreground and background colour to be set.

Write-Debug: Write directly to the console, if $DebugPreference set to Continue or Stop.

Write-Verbose: Write directly to the console, if $VerbosePreference set to Continue or Stop.

The latter is intended for extra optional information, Write-Debug for debugging (so would seem to fit in this case).

Additional: In PSH2 (at least) scripts using cmdlet binding will automatically get the -Verbose and -Debug switch parameters, locally enabling Write-Verbose and Write-Debug (i.e. overriding the preference variables) as compiled cmdlets and providers do.

2

Powershell has an alias mapping echo to Write-Output, so you can use:

echo "filesizecounter : $filesizecounter" 
3

PowerShell interpolates, does it not?

In PHP

echo "filesizecounter: " . $filesizecounter 

can also be written as:

echo "filesizecounter: $filesizecounter" 

In PowerShell something like this should suit your needs:

Write-Host "filesizecounter: $filesizecounter" 
0
Write-Host "filesizecounter : " $filesizecounter 

By far the easiest way to echo in powershell, is just create the string object and let the pipeline output it:

$filesizecounter = 8096 "filesizecounter : $filesizecounter" 

Of course, you do give up some flexibility when not using the Write-* methods.

echo is alias to Write-Output although it looks the same as Write-Host.

It isn't What is the difference between echo and Write-Host in PowerShell?.

echo is an alias for Write-Output, which writes to the Success output stream. This allows output to be processed through pipelines or redirected into files. Write-Host writes directly to the console, so the output can't be redirected/processed any further.

The Write-host work fine.

$Filesize = (Get-Item $filepath).length; Write-Host "FileSize= $filesize"; 

It should also be mentioned, that Set-PSDebug is similar to the old-school echo on batch command:

Set-PSDebug -Trace 1 

This command will result in showing every line of the executing script:

When the Trace parameter has a value of 1, each line of script is traced as it runs. When the parameter has a value of 2, variable assignments, function calls, and script calls are also traced. If the Step parameter is specified, you're prompted before each line of the script runs.

1

PowerShell has aliases for several common commands like echo. Type the following in PowerShell:

Get-Alias echo 

to get a response:

CommandType Name Version Source ----------- ---- ------- ------ Alias echo -> Write-Output 

Even Get-Alias has an alias gal -> Get-Alias. You could write gal echo to get the alias for echo.

gal echo 

Other aliases are listed here:

cat dir mount rm cd echo move rmdir chdir erase popd sleep clear h ps sort cls history pushd tee copy kill pwd type del lp r write diff ls ren

I don't know if it's wise to do so, but you can just write

"filesizecounter: " + $filesizecounter 

And it should output:

filesizecounter: value

1

Try Get-Content .\yourScript.PS1 and you will see the content of your script.

also you can insert this line in your scrip code:

get-content .\scriptname.PS1 script code script code 

....

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like