Поделиться через


about_Debuggers

Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0

Вставьте сюда введение.

РАЗДЕЛ

about_Debuggers

КРАТКОЕ ОПИСАНИЕ

Описывает отладчик Windows PowerShell®.

ПОДРОБНОЕ ОПИСАНИЕ

Отладка — это процесс проверки скрипта, пока он выполняется, для выявления и исправления ошибок в нем. Отладчик Windows PowerShell помогает находить и определять ошибки и неэффективные места в скриптах, функциях, командах, рабочих процессах Windows PowerShell и выражениях.

В Windows PowerShell 4.0 отладчик Windows PowerShell был обновлен для отладки скриптов, функций, рабочих процессов, команд и выражений, которые работают в консоли Windows PowerShell (не ISE) на удаленных компьютерах. Вы можете выполнить команду Enter-PSSession, чтобы создать интерактивный удаленный сеанс PowerShell, в котором можно задавать точки останова и выполнять отладку файлов и команд скриптов на удаленном компьютере. Функции команды Enter-PSSession были обновлены, теперь она позволяет повторно подключиться к отключенному сеансу, в котором выполняется скрипт или команда на удаленном компьютере. Если выполняющийся скрипт достигает точки останова, клиентский сеанс автоматически запускает отладчик. Если отключенный сеанс, в котором выполняется скрипт, уже достиг точки останова и останавливается в точке останова, Enter-PSSession автоматически запускает отладчик командной строки после повторного подключения к сеансу.

Отладчик Windows PowerShell 4.0 можно использовать для отладки рабочих процессов Windows PowerShell в консоли Windows PowerShell или Windows PowerShell ISE.

Можно использовать функции отладчика Windows PowerShell для проверки скрипта, функции, команды, рабочего процесса или выражения Windows PowerShell во время выполнения. Отладчик Windows PowerShell содержит набор командлетов, которые позволяют задавать точки останова, управлять ими и просматривать стек вызовов.

КОМАНДЛЕТЫ ОТЛАДЧИКА

Отладчик Windows PowerShell предоставляет следующий набор командлетов:

          Set-PsBreakpoint:     Sets breakpoints on lines, variables, and
                                commands. 

          Get-PsBreakpoint:     Gets breakpoints in the current session.

          Disable-PsBreakpoint: Turns off breakpoints in the current session.

          Enable-PsBreakpoint:  Re-enables breakpoints in the current session.

          Remove-PsBreakpoint:  Deletes breakpoints from the current session.

          Get-PsCallStack:      Displays the current call stack. 

ЗАПУСК И ОСТАНОВКА ОТЛАДЧИКА

Чтобы запустить отладчик, задайте одну или несколько точек останова. Затем выполните скрипт, команду или функцию, которую требуется отладить.

По достижении точки останова выполнение останавливается, а управление передается отладчику.

Чтобы остановить отладчик, выполните скрипт, команду или функцию до конца. Или введите "stop" или "t".

КОМАНДЫ ОТЛАДЧИКА

При использовании отладчика в консоли Windows PowerShell управляйте выполнением с помощью следующих команд. В Windows PowerShell ISE используйте команды в меню "Отладка".

Примечание. Подробнее об использовании отладчика в других ведущих приложениях см. в документации соответствующего ведущего приложения.

s, Step-into        Executes the next statement and then stops.


 v, Step-over        Executes the next statement, but skips functions
                            and invocations. The skipped statements are
                            executed, but not stepped through.


 o, Step-out         Steps out of the current function; up one level
                            if nested. If in the main body, it continues to
                            the end or the next breakpoint. The skipped
                            statements are executed, but not stepped through.


 c, Continue         Continues to run until the script is complete or
                            until the next breakpoint is reached. The skipped
                            statements are executed, but not stepped through.


        l, List             Displays the part of the script that is executing.
                            By default, it displays the current line, five
                            previous lines, and 10 subsequent lines. To continue
                            listing the script, press ENTER.
                        

        l <m>, List         Displays 16 lines of the script beginning with the
                            line number specified by <m>.                           

        l <m> <n>, List     Displays <n> lines of the script, beginning with the
                            line number specified by <m>.                           

        q, Stop             Stops executing the script, and exits the debugger.


        k, Get-PsCallStack  Displays the current call stack.


<Enter>             Repeats the last command if it was Step (s), 
                            Step-over (v), or List (l). Otherwise, represents a
                            submit action.  
                           

?, h                Displays the debugger command Help.


      To exit the debugger, use Stop (q).

С помощью этих команд отладчика вы можете выполнить скрипт, остановиться на интересующей вас точке, проверить значения переменных и состояния системы и продолжить выполнение скрипта до выявления проблемы.

ПРИМЕЧАНИЕ.

Если перейти в оператор с оператором перенаправления, таким как ">", отладчик Windows PowerShell перешагивает все остальные операторы в скрипте.

ОТОБРАЖЕНИЕ ЗНАЧЕНИЙ ПЕРЕМЕННЫХ СКРИПТА

Находясь в отладчике, можно также вводить команды, показывать значения переменных, использовать командлеты и выполнять скрипты в командной строке.

Можно просмотреть текущее значение всех переменных в проверяемом скрипте, кроме следующих автоматических переменных:

          $_
          $Args
          $Input
          $MyInvocation
          $PSBoundParameters

При попытке отобразить значение любой из этих переменных вы получите значение этой переменной для внутреннего конвейера, который используется отладчиком, а не значение переменной в скрипте.

Для отображения значения этих переменных скрипта, присвойте значение автоматической переменной новой переменной в скрипте. Затем можно отобразить значение новой переменной.

Например,

          $scriptArgs = $Args
          $scriptArgs

В примере в этом разделе значение переменной $MyInvocation переназначается следующим образом:

          $scriptname = $MyInvocation.MyCommand.Path

СРЕДА ОТЛАДЧИКА

При достижении точки останова вы входите в среду отладчика. Командная строка также меняется и теперь начинается с "[DBG]:". При отладке рабочего процесса, она начинается с "[WFDBG]". Этот запрос можно изменить.

Кроме того, в некоторых ведущих приложениях, таких как консоль Windows PowerShell (но не в интегрированной среде сценариев (ISE) Windows PowerShell), вложенный запрос открывается для отладки. Вложенный запрос можно обнаружить, повторив символы "больше" (ASCII 62), отображаемые в командной строке.

Например, ниже приведена строка запроса отладки по умолчанию в консоли Windows PowerShell:

[DBG]: PS (get-location)>>>

Уровень вложенности можно найти с помощью автоматической переменной $NestedPromptLevel.

Кроме того, автоматическая переменная $PSDebugContext определена в локальной области. Наличие переменной $PsDebugContext позволяет определить, находитесь ли вы в отладчике.

Например:

          if ($psdebugcontext) {"Debugging"} else {"Not Debugging"}

Значение переменной $PSDebugContext можно использовать при отладке.

[DBG]: PS>>> $psdebugcontext.invocationinfo

        Name   CommandLineParameters  UnboundArguments  Location
        ----   ---------------------  ----------------  --------
        =      {}                     {}                C:\ps-test\vote.ps1 (1)

ОТЛАДКА И ОБЛАСТЬ

Запуск отладчика не изменяет область, в которой вы работаете, но при достижении точки останова в скрипте вы переходите в область скрипта. Область скрипта — потомок области, в которой запущен отладчик.

Для поиска переменных и псевдонимов, определенных в области скрипта, используйте параметр Scope командлета Get-Alias или Get-Variable.

Например, следующая команда получает переменные в локальной области (в скрипте):

  get-variable -scope 0

Данную команду можно сократить следующим образом:

gv -s 0

Это удобный способ просмотра только тех переменных, которые вы определили в скрипте и во время отладки.

ОТЛАДКА В КОМАНДНОЙ СТРОКЕ

Установить точку останова переменной или команды можно только в файле скрипта. Однако по умолчанию точка останова устанавливается для любого элемента, который выполняется в текущем сеансе.

Например, если установить точку останова для переменной $name, отладчик останавливается на любой переменной $name в любом скрипте, команде, функции, командлете скрипта или выражении, которое выполняется до отключения или удаления точки останова.

Это дает возможность отладки скриптов в более реалистичном контексте, в котором на них могут влиять функции, переменные и другие скрипты в сеансе и в профиле пользователя.

Точки останова строки связаны с файлами скриптов, поэтому они устанавливаются только в файлах скриптов.

ОТЛАДКА РАБОЧИХ ПРОЦЕССОВ

Отладчик Windows PowerShell 4.0 можно использовать для отладки рабочих процессов Windows PowerShell в консоли Windows PowerShell или Windows PowerShell ISE. Существуют некоторые ограничений при использовании отладчика Windows PowerShell для отладки рабочих процессов.

-- You can view workflow variables while you are in the debugger, but
         setting workflow variables from within the debugger is not supported.
      -- Tab completion when stopped in the workflow debugger is not
         available.
      -- Workflow debugging works only with synchronous running of workflows from
         a Windows PowerShell script. You cannot debug workflows if they are
         running as a job (with the –AsJob parameter).
      -- Other nested debugging scenarios--such as a workflow calling another
         workflow, or a workflow calling a script--are not implemented.

В следующем примере показана отладка рабочего процесса. Обратите внимание, что когда отладчик заходит в функцию рабочего процесса, строка запроса меняется на [WFDBG].

          PS C:\> Set-PSBreakpoint -Script C:\TestWFDemo1.ps1 -Line 8

          ID Script           Line Command    Variable     Action
          -- ------           ---- -------    --------     ------
          0 TestWFDemo1.ps1   8

          PS C:\> C:\TestWFDemo1.ps1
          Entering debug mode. Use h or ? for help.

          Hit Line breakpoint on 'C:\TestWFDemo1.ps1:8'

          At C:\TestWFDemo1.ps1:8 char:5
          +     Write-Output -InputObject "Now writing output:"
          +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          [WFDBG:localhost]: PS C:\>> list

              3:
              4:  workflow SampleWorkflowTest
              5:  {
              6:      param ($MyOutput)
              7:
              8:*     Write-Output -InputObject "Now writing output:"
              9:      Write-Output -Input $MyOutput
             10:
             11:      Write-Output -InputObject "Get PowerShell process:"
             12:      Get-Process -Name powershell
             13:
             14:      Write-Output -InputObject "Workflow function complete."
             15:  }
             16:
             17:  # Call workflow function
             18:  SampleWorkflowTest -MyOutput "Hello"

          [WFDBG:localhost]: PS C:\>> $MyOutput
          Hello
          [WFDBG:localhost]: PS C:\>> stepOver
          Now writing output:
          At C:\TestWFDemo1.ps1:9 char:5
          +     Write-Output -Input $MyOutput
          +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          [WFDBG:localhost]: PS C:\>> list

              4:  workflow SampleWorkflowTest
              5:  {
              6:      param ($MyOutput)
              7:
              8:      Write-Output -InputObject "Now writing output:"
              9:*     Write-Output -Input $MyOutput
             10:
             11:      Write-Output -InputObject "Get PowerShell process:"
             12:      Get-Process -Name powershell
             13:
             14:      Write-Output -InputObject "Workflow function complete."
             15:  }
             16:
             17:  # Call workflow function
             18:  SampleWorkflowTest -MyOutput "Hello"
             19:

          [WFDBG:localhost]: PS C:\>> stepOver
          Hello
          At C:\TestWFDemo1.ps1:11 char:5
          +     Write-Output -InputObject "Get PowerShell process:"
          +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          [WFDBG:localhost]: PS C:\>> stepOut
          Get PowerShell process:

          Handles  NPM(K)    PM(K)   WS(K) VM(M)   CPU(s)     Id ProcessName    PSComputerName
          -------  ------    -----   ----- -----   ------     -- -----------    --------------
              433      35   106688   128392   726     2.67   7124 powershell    localhost
              499      44   134244   172096   787     2.79   7452 powershell    localhost
          Workflow function complete.

ОТЛАДКА ФУНКЦИЙ

Если установить точку останова на функции с разделами Begin, Process и End, отладчик останавливается в первой строке каждого раздела.

Например:

              function test-cmdlet
              {
                  begin
                  {
                      write-output "Begin"
                  }
                  process
                  {
                      write-output "Process"
                  }
                  end
                  {
                      write-output "End"
                  }
              }
        
          C:\PS> set-psbreakpoint -command test-cmdlet

          C:\PS> test-cmdlet
    
          Begin
          Entering debug mode. Use h or ? for help.

          Hit Command breakpoint on 'prompt:test-cmdlet'

          test-cmdlet

          [DBG]: C:\PS> c
          Process
          Entering debug mode. Use h or ? for help.

          Hit Command breakpoint on 'prompt:test-cmdlet'

          test-cmdlet

          [DBG]: C:\PS> c
          End
          Entering debug mode. Use h or ? for help.

          Hit Command breakpoint on 'prompt:test-cmdlet'

          test-cmdlet

          [DBG]: C:\PS> 

ОТЛАДКА УДАЛЕННЫХ СКРИПТОВ

В Windows PowerShell 4.0 вы можете запустить отладчик Windows PowerShell в удаленном сеансе в консоли Windows PowerShell 4.0. Функции команды Enter-PSSession были обновлены, теперь она позволяет повторно подключиться к отключенному сеансу, в котором выполняется скрипт на удаленном компьютере. Если выполняющийся скрипт достигает точки останова, клиентский сеанс автоматически запускает отладчик. Ниже приведен пример, в котором показано, как это работает, при этом точки останова заданы в строках 6, 11, 22 и 25 скрипта. Обратите внимание, что в примере при запуске отладчика показано два запроса идентификации: имя компьютера, на котором запущен сеанс, и строка запроса DBG, позволяющая понять, что вы находитесь в режиме отладки.

          Enter-Pssession -Cn localhost
          [localhost]: PS C:\psscripts> Set-PSBreakpoint .\ttest19.ps1 6,11,22,25

          ID Script          Line     Command          Variable          Action
          -- ------          ----     -------          --------          ------
          0 ttest19.ps1          6
          1 ttest19.ps1          11
          2 ttest19.ps1          22
          3 ttest19.ps1          25

           [localhost]: PS C:\psscripts> .\ttest19.ps1
          Hit Line breakpoint on 'C:\psscripts\ttest19.ps1:11'

          At C:\psscripts\ttest19.ps1:11 char:1
          + $winRMName = "WinRM"
          + ~
           [localhost]: [DBG]: PS C:\psscripts>> list


          6:      1..5 | foreach { sleep 1; Write-Output "hello2day $_" }
          7:  }
          8:
          9:  $count = 10
          10:  $psName = "PowerShell"
          11:* $winRMName = "WinRM"
          12:  $myVar = 102
          13:
          14:  for ($i=0; $i -lt $count; $i++)
          15:  {
          16:      sleep 1
          17:      Write-Output "Loop iteration is: $i"
          18:      Write-Output "MyVar is $myVar"
          19:
          20:      hello2day
          21:

           [localhost]: [DBG]: PS C:\psscripts>> stepover
          At C:\psscripts\ttest19.ps1:12 char:1
          + $myVar = 102
          + ~
           [localhost]: [DBG]: PS C:\psscripts>> quit
           [localhost]: PS C:\psscripts> Exit-PSSession
          PS C:\psscripts>

ПРИМЕРЫ

Этот тестовый скрипт определяет версию операционной системы и отображает соответствующее системное сообщение. Он содержит функцию, вызов функции и переменную.

Следующая команда отображает содержимое тестового файла скрипта:

  c:>\PS-test>  get-content test.ps1


  function psversion {
             "Windows PowerShell " + $psversiontable.psversion
              if ($psversiontable.psversion.major -lt 2) {
                  "Upgrade to Windows PowerShell 2.0!"
              }
              else {
                  "Have you run a background job today (start-job)?"
              }
          }

  $scriptname = $MyInvocation.MyCommand.Path
  psversion
  "Done $scriptname."

Для начала установите точку останова в нужном месте скрипта, например в строке, команде, переменной или функции.

Начните с создания точки останова в первой строке скрипта Test.ps1 в текущем каталоге.

PS C:\ps-test> set-psbreakpoint -line 1 -script test.ps1 

Данную команду можно сократить следующим образом:

PS C:\ps-test> spb 1 -s test.ps1

Команда возвращает объект точки останова строки (System.Management.Automation.LineBreakpoint).

      Column     : 0
            Line       : 1
            Action     :
            Enabled    : True
            HitCount   : 0
            Id         : 0
            Script     : C:\ps-test\test.ps1
            ScriptName : C:\ps-test\test.ps1

Теперь запустите скрипт.

PS C:\ps-test> .\test.ps1

Когда скрипт доходит до первой точки останова сообщение точки останова указывает на то, что отладчик активен. В нем описывается точка останова и отображается первая строка скрипта, в которой объявляется функция. Запрос командной строки также меняется, чтобы указать, что отладчик получил управление.

Строка предварительного просмотра содержит имя скрипта и номер строки просматриваемой команды.

          Entering debug mode. Use h or ? for help.

          Hit Line breakpoint on 'C:\ps-test\test.ps1:1'

          test.ps1:1   function psversion {
          DBG>

Используйте команду Step (s) для выполнения первого оператора в скрипте и предварительного просмотра следующего оператора. Следующий оператор использует автоматическую переменную $MyInvocation для присвоения переменной $ScriptName пути и имени файла скрипта.

          DBG> s
          test.ps1:11  $scriptname = $MyInvocation.MyCommand.Path

На этом этапе переменная $ScriptName не заполняется, но вы можете проверить значение переменной, отобразив ее значение. В этом случае значение равно $null.

          DBG> $scriptname
          DBG>

Используйте другую команду Step (s) для выполнения текущего оператора и предварительного просмотра следующего оператора в скрипте. Следующий оператор вызывает функцию PsVersion.

  DBG> s
  test.ps1:12  psversion

На этом этапе переменная $ScriptName заполняется, но вы можете проверить значение переменной, отобразив ее значение. В этом случае значение задается как путь к скрипту.

          DBG> $scriptname
          C:\ps-test\test.ps1

Используйте другую команду Step для выполнения вызова функции. Нажмите клавишу ВВОД или введите "s".

  DBG> s
  test.ps1:2       "Windows PowerShell " + $psversiontable.psversion

Сообщение об отладке содержит предварительный просмотр оператора в функции. Для выполнения оператора и предварительного просмотра следующего оператора можно использовать команду Step. Но в этом случае используйте команду Step-Out (o). Она завершает выполнение функции (если не достигнута точка останова) и переходит к следующему оператору в скрипте.

  DBG> o
  Windows PowerShell 2.0
  Have you run a background job today (start-job)?
  test.ps1:13  "Done $scriptname"

Поскольку мы находимся на последнем операторе в скрипте, команды Step, Step-Out и Continue имеют одинаковый эффект. В этом случае используйте Step-Out (o).

  Done C:\ps-test\test.ps1
  PS C:\ps-test>

Команда Step-Out выполняет последнюю команду скрипта. Стандартный запрос командной строки указывает, что отладчик завершил работу и вернул управление командному процессору.

Теперь запустите отладчик еще раз. Сначала удалите текущую точку останова с помощью командлетов Get-PsBreakpoint и Remove-PsBreakpoint. (Если вы считаете, что точку останова можно использовать повторно, выполните командлет Disable-PsBreakpoint вместо Remove-PsBreakpoint.)

  PS C:\ps-test> Get-PsBreakpoint | Remove-PSBreakpoint

Данную команду можно сократить следующим образом:

  PS C:\ps-test> gbp | rbp

Или выполните команду, написав функцию, например следующую:

  function delbr { gbp | rbp }

Теперь создайте точку останова в переменной $scriptname.

  PS C:\ps-test> set-psbreakpoint -variable scriptname -script test.ps1

Данную команду можно сократить следующим образом:

  PS C:\ps-test> sbp -v scriptname -s test.ps1

Теперь запустите скрипт. Скрипт достигает точки останова переменной. По умолчанию используется режим записи, поэтому выполнение останавливается непосредственно перед оператором, который изменяет значение переменной.

  PS C:\ps-test> .\test.ps1
  Hit Variable breakpoint on 'C:\ps-test\test.ps1:$scriptname'
          (Write access)

  test.ps1:11  $scriptname = $MyInvocation.mycommand.path
  DBG>

Покажите текущее значение переменной $scriptname, которая равна $null.

          DBG> $scriptname
          DBG>

Используйте команду Step (s) для выполнения оператора, который заполняет переменную. Затем отобразите новое значение переменной $scriptname.

  DBG> $scriptname
  C:\ps-test\test.ps1

Используйте команду Step (s) для предварительного просмотра следующего оператора в скрипте.

  DBG> s
  test.ps1:12  psversion

Следующий оператор вызывает функцию PsVersion. Чтобы пропустить функции, но по-прежнему выполнить ее, используйте команду Step-Over (v). Если вы уже находитесь в функции, команда Step-Over не даст результата. Вызов функции отображается, но не выполняется.

  DBG> v
  Windows PowerShell 2.0
  Have you run a background job today (start-job)?
  test.ps1:13  "Done $scriptname"   

Команда Step-Over выполняет функцию и отображает следующий оператор в скрипте, который выводит последнюю строку.

Используйте команду Stop (t), чтобы выйти из отладчика. Восстанавливается стандартный запрос командной строки.

  C:\ps-test>

Удалите текущую точку останова с помощью командлетов Get-PsBreakpoint и Remove-PsBreakpoint.

  PS C:\ps-test> Get-PsBreakpoint | Remove-PSBreakpoint

Создайте новую точку останова в функции PsVersion.

          PS C:\ps-test> Set-PsBreakpoint -command psversion -script test.ps1 

Данную команду можно сократить следующим образом:

          PS C:\ps-test> sbp -c psversion -s test.ps1 

Теперь запустите скрипт.

          PS C:\ps-test> .\test.ps1
          Hit Command breakpoint on 'C:\ps-test\test.ps1:psversion'

          test.ps1:12  psversion
          DBG>

Скрипт достигает точку останова при вызове функции. На этом этапе функция еще не вызвана. Это позволяет использовать параметр Action командлета Set-PsBreakpoint, чтобы задать условия выполнения точки останова или выполнить задачи подготовки или диагностики, например запуск журнала или вызов скрипта диагностики и безопасности.

Чтобы задать действие, используйте команду Continue (c), чтобы выйти из скрипта, и команду Remove-PsBreakpoint для удаления текущей точки останова. (Точки останова доступны только для чтения, поэтому невозможно добавить действие к текущей точке останова.)

  DBG> c
  Windows PowerShell 2.0
  Have you run a background job today (start-job)?
  Done C:\ps-test\test.ps1

  PS C:\ps-test> get-psbreakpoint | remove-psbreakpoint
  PS C:\ps-test>

Теперь создайте новую точку останова команды с действием. Следующая команда устанавливает точку останова команды с действием, которое регистрирует значение переменной $scriptname в журнале при вызове функции. Поскольку ключевое слово Break не используется в действии, выполнение не останавливается. (Обратный апостроф ("`") — это символ продолжения строки.)

         PS C:\ps-test> set-psbreakpoint -command psversion -script test.ps1  `
         -action { add-content "The value of `$scriptname is $scriptname." `
         -path action.log}

Кроме того, можно добавить действия, которые задают условия для точки останова. В следующей команде точка останова команды выполняется, только если задана политика выполнения RemoteSigned — наиболее строгая политика, которая по-прежнему позволяет запускать скрипты. (Обратный апостроф ("`") — это символ продолжения.)

          PS C:\ps-test> set-psbreakpoint -script test.ps1 -command psversion `
          -action { if ((get-executionpolicy) -eq "RemoteSigned") { break }}

Ключевое слово Break в действии перенаправляет отладчик для выполнения точки останова. Вы также можете использовать ключевое слово Continue для выполнения без остановки. Поскольку ключевое слово по умолчанию — Continue, необходимо указать ключевое слово Break, чтобы остановить выполнение.

Теперь запустите скрипт.

  PS C:\ps-test> .\test.ps1
  Hit Command breakpoint on 'C:\ps-test\test.ps1:psversion'

  test.ps1:12  psversion

Поскольку задана политика выполнения RemoteSigned, выполнение останавливается в вызове функции.

На этом этапе может потребоваться проверить стек вызовов. Используйте командлет Get-PsCallStack или команду Get-PsCallStack отладчика (k). Следующая команда возвращает текущий стек вызовов.

  DBG> k
  2: prompt
  1: .\test.ps1: $args=[]
  0: prompt: $args=[]

В этом примере показаны лишь некоторые из многих способов использования отладчика Windows PowerShell.

Для получения подробных сведений о командлетах отладчика введите следующую команду:

          help <cmdlet-name> -full

Например, введите следующую команду:

          help set-psbreakpoint -full

ДРУГИЕ ФУНКЦИИ ОТЛАДКИ В WINDOWS POWERSHELL

В дополнение к отладчику Windows PowerShell, Windows PowerShell содержит несколько других функций, которые можно использовать для отладки скриптов и функций.

    -- Windows PowerShell Integrated Scripting Environment (ISE) includes
       an interactive graphical debugger. For more information, start Windows
       PowerShell ISE and press F1.

    -- The Set-PSDebug cmdlet offers very basic script debugging features,
       including stepping and tracing. 

    -- Use the Set-StrictMode cmdlet to detect references to 
       uninitialized variables, to references to non-existent properties
       of an object, and to function syntax that is not valid. 

    -- Add diagnostic statements to a script, such as statements that
       display the value of variables, statements that read input from
       the command line, or statements that report the current 
       instruction. Use the cmdlets that contain the Write verb for 
       this task, such as Write-Host, Write-Debug, Write-Warning, and
       Write-Verbose.          

СМ. ТАКЖЕ

Disable-PsBreakpoint

Enable-PsBreakpoint

Get-PsBreakpoint

Get-PsCallStack

Remove-PsBreakpoint

Set-PsBreakpoint

Set-PsDebug

Set-Strictmode

Write-Debug

Write-Verbose