I\'m writing a large script that deploys an application. This script is based on several nested function calls.
Is there any way to \"ident\" the output based on the dep
You can use Console.CursorLeft to set its position. Be aware that write-output will reset any custom location, so you need to reset it after each output. Here is a sample:
$i = 0 function Indent() { [console]::CursorLeft += 2 $i = [console]::CursorLeft $i } function UnIndent() { if($i -gt 0) { $i -= 2 } [console]::CursorLeft = $i $i } function WriteIndent([string]$s) { [console]::CursorLeft += $i write-host $s # Reset indent, as write-host will set cursor to indent 0 [console]::CursorLeft += $i } function myFnNested() { $i = Indent WriteIndent "Start of myFnNested" WriteIndent "End of myFnNested" $i = UnIndent } function myFn() { $i = Indent WriteIndent "Start of myfn" myFnNested WriteIndent "End of myfn" $i = UnIndent } WriteIndent "Start of myscript" myFn WriteIndent "End of myscript"
Output:
PS C:\scripting> .\Indent-Output.ps1 Start of myscript Start of myfn Start of myFnNested End of myFnNested End of myfn End of myscript