This would write the output to a logfile:
& $Env:WinDir\system32\inetsrv\appcmd.exe >test.log
But what if I wanted to keep the output in a string variable to use it in the email body?
I tried this without any luck..
$test = "" & $Env:WinDir\system32\inetsrv\appcmd.exe >$test Write-Host $test
There are two PowerShell operators you can use to redirect output: > and >> . The > operator is equivalent to Out-File while >> is equivalent to Out-File -Append . The redirection operators have other uses like redirecting error or verbose output streams.
To send a PowerShell command's output to the Out-File cmdlet, use the pipeline. Alternatively, you can store data in a variable and use the InputObject parameter to pass data to the Out-File cmdlet. Out-File saves data to a file but it does not produce any output objects to the pipeline.
The Out-File cmdlet is most useful when you want to save output as it would have displayed on the console. For finer control over output format, you need more advanced tools.
You have to do:
$test = & $Env:WinDir\system32\inetsrv\appcmd.exe
If you wanted to redirect error as well, add 2>&1
in the end.
Capturing the output of a executable is as simple as,
$cmdOutput = &"Application.exe" 2>&1
2>&1 - Includes the error stream in the output
Return type of the executable in PowerShell is an array of strings. In case of logging such outputs,
Write-Host $cmdOutput
will output the strings in the array to the output stream separated by spaces
To print them in a string per line fashion, choose
Write-Output $cmdOutput
or
$cmdOutput = &"Application.exe" | Out-String Write-Host $cmdOutput
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With