Get-PSCall Stack

Displays the current call stack.

Syntax

Get-PSCallStack []

Description

The Get-PSCallStack cmdlet displays the current call stack.

Although it is designed to be used with the Windows PowerShell debugger, you can use this cmdlet to display the call stack in a script or function outside of the debugger.

To run a Get-PSCallStack command while in the debugger, type k or Get-PSCallStack .

Examples

Example 1: Get the call stack for a function

PS C:\> function my-alias {

$p = $args[0]

Get-Alias | where {$_.definition -like "*$p"} | format-table definition, name -auto

}

PS C:\ps-test> Set-PSBreakpoint -Command my-alias

Command    : my-alias

Action     :

Enabled    : True

HitCount   : 0

Id         : 0

Script     : prompt PS C:\> my-alias Get-Content



Entering debug mode. Use h or ? for help.

Hit Command breakpoint on 'prompt:my-alias'

my-alias get-content

[DBG]: PS C:\ps-test> s

$p = $args[0]

DEBUG: Stepped to ':    $p = $args[0]    '

[DBG]: PS C:\ps-test> s

get-alias | Where {$_.Definition -like "*$p*"} | format-table Definition,

[DBG]: PS C:\ps-test>get-pscallstack



Name        CommandLineParameters         UnboundArguments              Location

----        ---------------------         ----------------              --------

prompt      {}                            {}                            prompt

my-alias    {}                            {get-content}                 prompt

prompt      {}                            {}                            prompt PS C:\> [DBG]: PS C:\ps-test> o

Definition  Name

----------  ----

Get-Content gc

Get-Content cat

Get-Content type

This command uses the Get-PSCallStack cmdlet to display the call stack for My-Alias, a simple function that gets the aliases for a cmdlet name.

The first command enters the function at the Windows PowerShell prompt. The second command uses the Set-PSBreakpoint cmdlet to set a breakpoint on the My-Alias function. The third command uses the My-Alias function to get all of the aliases in the current session for the Get-Content cmdlet.

The debugger breaks in at the function call. Two consecutive step-into (s) commands begin executing the function line by line. Then, a Get-PSCallStack command is used to retrieve the call stack.

The final command is a Step-Out command (o) that exits the debugger and continues executing the script to completion.

Inputs

None

You cannot pipe objects to this cmdlet.

Outputs

System.Management.Automation.CallStackFrame

Get-PSCallStack returns an object that represents the items in the call stack.