Остановка всех остальных сеансов PowerShell
Иногда может быть полезно остановить все запущенные сеансы PowerShell, отличные от текущего. Если сеанс использует слишком много ресурсов или недоступен (он может выполняться удаленно или в другом сеансе), возможно, остановить его напрямую не получится. При попытке остановить все выполняющиеся сеансы может быть завершен текущий сеанс.
Каждый сеанс PowerShell имеет переменную среды PID, которая содержит идентификатор Windows PowerShell процесса. Можно проверить переменную $PID на наличие идентификатора каждого сеанса и завершить только сеансы Windows PowerShell с другим идентификатором. Следующая команда конвейера делает именно это и возвращает список завершенных сеансов (из-за использования параметра PassThru):
Устранение неполадок
При возникновении трудностей во время отладки необходимо проверить следующее:
службы «Функции Azure» | Действие |
---|---|
В окне терминала выполните команду . Если появляется сообщение об ошибке, где не находится , то это значит возможное отсутствие Core Tools (func.exe) в локальной переменной . | . |
В Visual Studio Code терминалу по умолчанию необходим доступ к func.exe. Убедитесь, что вы не используете терминал по умолчанию, на котором не установлены Core Tools, например, подсистема Windows для Linux (WSL). | Задайте консоль по умолчанию в Visual Studio Code либо PowerShell 7 (рекомендуется), либо Windows PowerShell 5.1. |
Остановка всех остальных сеансов PowerShell
Иногда может быть полезно остановить все запущенные сеансы PowerShell, отличные от текущего. Если сеанс использует слишком много ресурсов или недоступен (он может выполняться удаленно или в другом сеансе), возможно, остановить его напрямую не получится. При попытке остановить все выполняющиеся сеансы может быть завершен текущий сеанс.
Каждый сеанс PowerShell имеет переменную среды PID, которая содержит идентификатор Windows PowerShell процесса. Можно проверить переменную $PID на наличие идентификатора каждого сеанса и завершить только сеансы Windows PowerShell с другим идентификатором. Следующая команда конвейера делает именно это и возвращает список завершенных сеансов (из-за использования параметра PassThru):
Отладка с помощью Visual Studio Code
Отладка без рабочей области
Начиная с версии VS Code 1.9, вы можете отлаживать скрипты PowerShell, не открывая папку со скриптом PowerShell.
- Откройте файл скрипта PowerShell с помощью команды Файл > Открыть файл….
- Установите точку останова на строке и нажмите клавишу F9.
- Нажмите клавишу F5, чтобы запустить отладку.
Откроется панель действий отладки, позволяющая прервать работу отладчика, возобновить отладку, выполнить ее пошагово или остановить.
Отладка с рабочей областью
Отладка с рабочей областью обозначает отладку в контексте папки, которую вы открыли с помощью команды Открыть папку из меню Файл. Открытая папка обычно является папкой проекта PowerShell или корнем репозитория Git. Отладка с рабочей областью позволяет задать несколько конфигураций отладки, а не просто выполнить отладку открытого файла.
Выполните следующие действия, чтобы создать файл конфигурации отладки:
-
Откройте представление Отладка в Windows или Linux (CTRL+SHIFT+D). В macOS нажмите клавиши CMD+SHIFT+D.
-
Щелкните ссылку create a launch.json file (Создать файл launch.json).
-
В окне запроса Select Environment (Выбор среды) выберите PowerShell.
-
Выберите тип отладки, который хотите использовать:
- Launch Current File (Запуск текущего файла) — запуск и отладка файла в текущем активном окне редактора.
- Launch Script (Запуск скрипта) — запуск и отладка указанного файла или команды.
- Interactive Session (Интерактивный сеанс) — команды отладки, выполняемые из интегрированной консоли.
- Attach (Подключение) — подключение отладчика к выполняемому хост-процессу PowerShell.
VS Code создаст каталог и файл в корневой папке рабочей области, где будет храниться конфигурация отладки. Если ваши файлы хранятся в репозитории Git, скорее всего, вы захотите зафиксировать файл . Содержимое файла :
Этот файл представляет типичные сценарии отладки. При открытии его в редакторе отображается кнопка Добавить конфигурацию… Можете нажать ее, чтобы добавить дополнительные конфигурации отладки PowerShell. Одной из полезных конфигураций является PowerShell: Launch Script (Запустить сценарий). С помощью этой конфигурации можно указать файл с дополнительными аргументами, которые используются при каждом нажатии клавиши F5, независимо от того, какой файл активен в редакторе.
После задания конфигурации отладки вы можете указать конфигурацию, которую необходимо использовать во время сеанса отладки, выбрав ее в раскрывающемся списке конфигураций отладки на панели инструментов представления Отладка.
Параметры
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Указывает идентификаторы процессов, которые необходимо отладить. Имя параметра Id является необязательным.
Чтобы найти идентификатор процесса, введите .
Type: | Int32 |
Aliases: | PID, ProcessId |
Position: | |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InputObject
Указывает объекты процессов, которые необходимо отладить. Введите переменную, содержащую объекты процесса, или команду, которая получает объекты процесса, например командлет . Вы также можете передать объекты обработки в этот командлет.
Type: | Process |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Указывает имена процессов, которые необходимо отладить. Если имеется несколько процессов с одинаковыми именами, этот командлет присоединяет отладчик ко всем процессам с таким именем. Параметр Name является необязательным.
Type: | String |
Aliases: | ProcessName |
Position: | |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Примечания
работает с пространствами выполнения, которые находятся в состоянии «Открыто». Если состояние пространства выполнения изменяется с Открыто на другое, это пространство выполнения автоматически удаляется из списка выполнения. Пространство выполнения добавляется в список выполнения, только если оно соответствует следующим критериям.
- Если он поступает из Invoke-Command; то есть имеет идентификатор GUID.
- Если он поступает из ; то есть имеет идентификатор GUID.
- Если он поступает из рабочего процесса PowerShell и его идентификатор задания рабочего процесса совпадает с идентификатором текущего активного задания рабочего процесса отладчика.
Параметры
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Указывает идентификаторы процессов, которые необходимо отладить. Имя параметра Id является необязательным.
Чтобы найти идентификатор процесса, введите .
Type: | Int32 |
Aliases: | PID, ProcessId |
Position: | |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InputObject
Указывает объекты процессов, которые необходимо отладить. Введите переменную, содержащую объекты процесса, или команду, которая получает объекты процесса, например командлет . Вы также можете передать объекты обработки в этот командлет.
Type: | Process |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Указывает имена процессов, которые необходимо отладить. Если имеется несколько процессов с одинаковыми именами, этот командлет присоединяет отладчик ко всем процессам с таким именем. Параметр Name является необязательным.
Type: | String |
Aliases: | ProcessName |
Position: | |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Создание задачи сборки
Выполняйте автоматическую сборку проекта перед запуском сеанса отладки. Это позволяет гарантировать, что вы отлаживаете последнюю версию кода.
Настройте задачу сборки.
-
В палитре команд выполните команду Настроить задачу сборки по умолчанию.
-
В диалоговом окне Выбор задачи для настройки выберите Создать файл tasks.json из шаблона.
-
В диалоговом окне Выбор шаблона задачи выберите .NET Core.
Если файл еще не существует, он будет создан.
Чтобы протестировать задачу сборки, выполните указанные ниже действия.
-
В палитре команд выполните команду Выполнить задачу сборки.
-
В диалоговом окне Выбор задачи сборки для выполнения выберите сборка.
Сведения о блокировке файлов DLL
По умолчанию в случае успешной сборки выходные данные в терминале не выводятся. Если вы видите выходные данные c текстом Файл проекта не существует, следует изменить файл . Включите явный путь к проекту C# в виде . В данном примере — это имя папки проекта. Этот элемент должен следовать после элемента в списке следующим образом:
При отладке библиотека DLL модуля импортируется в сеанс PowerShell в терминале VS Code. При этом она блокируется. Если запустить задачу сборки, не закрывая сеанс терминала, появится следующее сообщение:
Перед перестроением необходимо закрыть сеансы терминала.
Параметры
-Confirm
Запрос подтверждения перед выполнением командлета.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Id
Указывает идентификаторы процессов, которые необходимо отладить. Имя параметра Id является необязательным.
Чтобы найти идентификатор процесса, введите .
Type: | Int32 |
Aliases: | PID, ProcessId |
Position: | |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-InputObject
Указывает объекты процессов, которые необходимо отладить. Введите переменную, содержащую объекты процесса, или команду, которая получает объекты процесса, например командлет . Вы также можете передать объекты обработки в этот командлет.
Type: | Process |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Name
Указывает имена процессов, которые необходимо отладить. Если имеется несколько процессов с одинаковыми именами, этот командлет присоединяет отладчик ко всем процессам с таким именем. Параметр Name является необязательным.
Type: | String |
Aliases: | ProcessName |
Position: | |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-WhatIf
Показывает, что произойдет при запуске командлета. Командлет не выполняется.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Примеры
Пример 1. Отладка удаленного пространства выполнения
В этом примере выполняется отладка пространства выполнения, открытого на удаленном компьютере WS10TestServer. В первой строке команды выполняется на удаленном компьютере и выполняется фильтрация по Windows PowerShell хост-процессам. В этом примере требуется выполнить отладку процесса с идентификатором 1152, Windows PowerShell процесса узла ISE.
Во второй команде выполните команду , чтобы открыть удаленный сеанс на WS10TestServer. В третьей команде выполняется присоединение к Windows PowerShell хост-процессу ISE, выполняемого на удаленном сервере, путем выполнения и указания идентификатора хост-процесса, полученного в первой команде 1152.
В четвертой команде выводится список доступных пространств выполнения для процесса с идентификатором 1152, выполнив команду .
Обратите внимание на идентификатор пространства выполнения Busy; он выполняет скрипт, который требуется отладить. В последней команде вы начинаете отладку открытого пространства выполнения, в котором выполняется скрипт , путем выполнения и идентификации пространства выполнения по идентификатору 2 путем добавления параметра Id
Так как в скрипте есть точка останова, откроется отладчик
В последней команде вы начинаете отладку открытого пространства выполнения, в котором выполняется скрипт , путем выполнения и идентификации пространства выполнения по идентификатору 2 путем добавления параметра Id . Так как в скрипте есть точка останова, откроется отладчик.
How To Set A Breakpoint For A Variable In A Function
We should use Set-PSBreakpoint CmdLet with Script parameter pointing to the script file and Variable parameter with the name of the variable and we need to choose Mode like in example:
Use Set-PSBreakpoint CmdLet to set variable type breakpoint
If we list again all breakpoints set so far we will see all the types of breakpoints: line, command, and variable.
List all type of breakpoints: line, command, and variable
Valid values for Mode parameter are:
- Write (default). Execution of code is stoped immediately before a new value is written to the variable.
- Read. Stops execution when the variable is read. In reading mode, the execution of code doesn’t stop when the value of the variable changes.
- ReadWrite. Execution of code is stoped when the variable is read or written.
Остановка всех остальных сеансов PowerShell
Иногда может быть полезно остановить все запущенные сеансы PowerShell, отличные от текущего. Если сеанс использует слишком много ресурсов или недоступен (он может выполняться удаленно или в другом сеансе), возможно, остановить его напрямую не получится. При попытке остановить все выполняющиеся сеансы может быть завершен текущий сеанс.
Каждый сеанс PowerShell имеет переменную среды PID, которая содержит идентификатор Windows PowerShell процесса. Можно проверить переменную $PID на наличие идентификатора каждого сеанса и завершить только сеансы Windows PowerShell с другим идентификатором. Следующая команда конвейера делает именно это и возвращает список завершенных сеансов (из-за использования параметра PassThru):
Остановка процессов
PowerShell обеспечивает гибкость при перечислении процессов, но как насчет остановки процесса?
Командлет принимает имя или идентификатор , чтобы указать процесс, который необходимо остановить. Возможность остановки процессов зависит от ваших разрешений. Некоторые процессы не могут быть остановлены. Например, при попытке остановить неактивный процесс возникает ошибка:
Можно также принудительно вывести запрос с помощью параметра Confirm. Этот параметр особенно удобен, если при указании имени процесса используется подстановочный знак, так как вы можете случайно сопоставить некоторые процессы, которые не нужно останавливать:
Сложную обработку процессов можно реализовать с помощью командлетов фильтрации объектов. Так как объект Process имеет свойство Responding , которое имеет значение true, если он больше не отвечает, вы можете остановить все неотвечивые приложения с помощью следующей команды:
Аналогичный подход возможен и в других ситуациях. Предположим, например, что приложение дополнительной области уведомлений запускается автоматически при открытии другого приложения. Вы можете обнаружить, что это не работает правильно в сеансах служб терминалов, но вы по-прежнему хотите сохранить его в сеансах, которые выполняются на консоли физического компьютера. Сеансы, подключенные к рабочему столу физического компьютера, всегда имеют идентификатор сеанса 0, поэтому можно остановить все экземпляры процесса, находящиеся в других сеансах, с помощью и SessionId процесса:
Командлет не имеет параметра ComputerName . Поэтому для выполнения команды остановки процесса на удаленном компьютере необходимо использовать командлет . Например, чтобы остановить процесс PowerShell на удаленном компьютере Server01, введите:
How To Manage A Debugging Session
REMEMBER: Even before starting debugging your script, save it first, then set one or more breakpoints and you are ready to start debugging.
How To Start Debugging
There are several ways to start debugging:
- Click on Run Script icon on the toolbar.
- Press F5 key shortcut.
- Go to the Debug menu and click Run/Continue.
The script will run until it encountered the first breakpoint. It pauses execution there and highlights the line on which it paused. In Script pane all the open tabs will have next to the name of the script. In the Console pane, we will get information that execution Hit Line breakpoint with starting next line meaning that we are in debugging mode right now.
How To Continue Debugging
There are several ways to continue debugging:
- Press F5 key shortcut.
- Go to the Debug menu and click the Run/Continue.
- Click on Run Script Icon in the toolbar.
- In Console Pane, type C and then press ENTER.
How To View The Call Stack
There are several ways to view the call stack:
- Press Ctrl + Shift + D.
- Go to the Debug menu and click on Display Call Stack.
- In Console Pane, press K and then press ENTER.
- Run Get-PSCallStack CmdLet like in the following example.
Call Stack Displayed
How To Stop Debugging
There are several ways to stop debugging:
- Press Shift + F5.
- Go to the Debug menu and click Stop Debugger.
- In Console Pane, type Q and then press ENTER.
Создание задачи сборки
Выполняйте автоматическую сборку проекта перед запуском сеанса отладки. Это позволяет гарантировать, что вы отлаживаете последнюю версию кода.
Настройте задачу сборки.
-
В палитре команд выполните команду Настроить задачу сборки по умолчанию.
-
В диалоговом окне Выбор задачи для настройки выберите Создать файл tasks.json из шаблона.
-
В диалоговом окне Выбор шаблона задачи выберите .NET Core.
Если файл еще не существует, он будет создан.
Чтобы протестировать задачу сборки, выполните указанные ниже действия.
-
В палитре команд выполните команду Выполнить задачу сборки.
-
В диалоговом окне Выбор задачи сборки для выполнения выберите сборка.
Сведения о блокировке файлов DLL
По умолчанию в случае успешной сборки выходные данные в терминале не выводятся. Если вы видите выходные данные c текстом Файл проекта не существует, следует изменить файл . Включите явный путь к проекту C# в виде . В данном примере — это имя папки проекта. Этот элемент должен следовать после элемента в списке следующим образом:
При отладке библиотека DLL модуля импортируется в сеанс PowerShell в терминале VS Code. При этом она блокируется. Если запустить задачу сборки, не закрывая сеанс терминала, появится следующее сообщение:
Перед перестроением необходимо закрыть сеансы терминала.
Примечания
работает с пространствами выполнения, которые находятся в состоянии «Открыто». Если состояние пространства выполнения изменяется с Открыто на другое, это пространство выполнения автоматически удаляется из списка выполнения. Пространство выполнения добавляется в список выполнения, только если оно соответствует следующим критериям.
- Если он поступает из Invoke-Command; то есть имеет идентификатор GUID.
- Если он поступает из ; то есть имеет идентификатор GUID.
- Если он поступает из рабочего процесса PowerShell и его идентификатор задания рабочего процесса совпадает с идентификатором текущего активного задания рабочего процесса отладчика.
Начало работы
Перед запуском убедитесь, что оболочка PowerShell установлена в системе. Сведения о современных рабочих нагрузках для Windows, macOS и Linux см. по следующим ссылкам:
- Установка PowerShell в Linux
- Установка PowerShell в macOS
- Установка PowerShell в Windows
Сведения о традиционных рабочих нагрузках Windows PowerShell см. в разделе Установка Windows PowerShell.
Важно!
Интегрированная среда сценариев Windows PowerShell по-прежнему доступна для Windows, но функции для нее больше не разрабатываются. Интегрированная среда сценариев (ISE) работает только с PowerShell 5.1 и более ранних версий. Как компонент Windows эта среда по-прежнему официально поддерживается для внесения критически важных исправлений, связанных с безопасностью и обслуживанием.
Пока что мы не планируем удалять ее из Windows.
Создание задачи сборки
Выполняйте автоматическую сборку проекта перед запуском сеанса отладки. Это позволяет гарантировать, что вы отлаживаете последнюю версию кода.
Настройте задачу сборки.
-
В палитре команд выполните команду Настроить задачу сборки по умолчанию.
-
В диалоговом окне Выбор задачи для настройки выберите Создать файл tasks.json из шаблона.
-
В диалоговом окне Выбор шаблона задачи выберите .NET Core.
Если файл еще не существует, он будет создан.
Чтобы протестировать задачу сборки, выполните указанные ниже действия.
-
В палитре команд выполните команду Выполнить задачу сборки.
-
В диалоговом окне Выбор задачи сборки для выполнения выберите сборка.
Сведения о блокировке файлов DLL
По умолчанию в случае успешной сборки выходные данные в терминале не выводятся. Если вы видите выходные данные c текстом Файл проекта не существует, следует изменить файл . Включите явный путь к проекту C# в виде . В данном примере — это имя папки проекта. Этот элемент должен следовать после элемента в списке следующим образом:
При отладке библиотека DLL модуля импортируется в сеанс PowerShell в терминале VS Code. При этом она блокируется. Если запустить задачу сборки, не закрывая сеанс терминала, появится следующее сообщение:
Перед перестроением необходимо закрыть сеансы терминала.
Режим ISE
Примечание
Эта функция доступна в расширении предварительной версии PowerShell, начиная с версии 2019.12.0, и в расширении PowerShell, начиная с версии 2020.3.0.
Самый простой способ реплицировать функции интегрированной среды скриптов (ISE) в Visual Studio Code — включить режим ISE.
Для этого откройте палитру команд (клавиша F1 или клавиши CTRL+SHIFT+P или CMD+SHIFT+P в macOS) и введите ISE Mode (Режим ISE). Выберите в списке пункт «PowerShell: Enable ISE Mode» (PowerShell: включить режим ISE).
Эта команда автоматически применяет многие параметры, описанные в этом документе. Результат имеет следующий вид:
Запуск скрипта
Перед запуском скрипта в Windows необходимо изменить политику выполнения PowerShell по умолчанию. Политика выполнения не применяется к PowerShell, работающей на платформах, отличных от Windows.
Политика выполнения по умолчанию запрещает выполнение всех скриптов, включая скрипты, которые вы пишете на локальном компьютере. Подробнее см. в разделе about_Execution_Policies.
Политика выполнения сохраняется в реестре, поэтому ее необходимо изменить только один раз на каждом компьютере.
Чтобы изменить политику выполнения, используйте следующую процедуру.
В командной строке введите:
или
Это изменение действует немедленно.
Чтобы запустить скрипт, введите полное имя и полный путь к файлу скрипта.
Например, чтобы запустить скрипт Get-ServiceLog.ps1 в каталоге C:\Scripts, введите:
Чтобы запустить скрипт в текущем каталоге, введите путь к текущему каталогу или используйте точку для представления текущего каталога, за которым следует обратная косая черта пути ().
Например, чтобы запустить скрипт ServicesLog.ps1 в локальном каталоге, введите:
Если скрипт имеет параметры, введите параметры и значения параметров после имени файла скрипта.
Например, следующая команда использует параметр ServiceName скрипта Get-ServiceLog для запроса журнала действий службы WinRM.
В качестве функции безопасности PowerShell не выполняет скрипты при двойном щелчке значка скрипта в проводник или при вводе имени скрипта без полного пути, даже если скрипт находится в текущем каталоге. Дополнительные сведения о выполнении команд и скриптов в PowerShell см. в about_Command_Precedence.
Запуск с помощью PowerShell
Начиная с PowerShell 3.0, можно запускать скрипты из проводник.
Чтобы использовать функцию «Запуск с помощью PowerShell», выполните следующие действия.
Запустите проводник, щелкните правой кнопкой мыши имя файла скрипта и выберите команду «Выполнить с помощью PowerShell».
Функция «Запуск с помощью PowerShell» предназначена для выполнения скриптов, которые не имеют необходимых параметров и не возвращают выходные данные в командную строку.
Дополнительные сведения см. в разделе about_Run_With_PowerShell.
Выполнение скриптов на других компьютерах
Чтобы запустить скрипт на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета .
Введите путь и имя файла скрипта в качестве значения параметра FilePath . Скрипт должен находиться на локальном компьютере или в каталоге, к которому локальный компьютер может получить доступ.
Следующая команда запускает скрипт на удаленных компьютерах с именами Server01 и Server02.
Полезные ресурсы
Существует несколько видео и записей блогов, которые могут оказаться полезными при начале работы с расширением PowerShell для VS Code:
Видео
- Использование Visual Studio Code в качестве редактора PowerShell по умолчанию
- Visual Studio Code: подробный обзор отладки сценариев PowerShell
Записи блога
- Расширение PowerShell
- Написание и отладка в сценариев PowerShell в Visual Studio Code
- Руководство по отладке Visual Studio Code
- Отладка PowerShell в Visual Studio Code
- Приступая к разработке PowerShell в Visual Studio Code
- Функции редактирования Visual Studio Code для разработки PowerShell. Часть 1
- Функции редактирования Visual Studio Code для разработки PowerShell. Часть 2
- Отладка сценария PowerShell в Visual Studio Code. Часть 1
- Отладка сценария PowerShell в Visual Studio Code. Часть 2
Описание
Командлет запускает интерактивный сеанс отладки с локальным или удаленным активным пространством выполнения. Чтобы найти пространство выполнения, которое требуется отладить, сначала выполните команду , чтобы найти процессы, связанные с PowerShell, затем с идентификатором процесса, указанным в параметре Id для присоединения к процессу, а затем для вывода списка пространств выполнения в хост-процессе PowerShell.
После выбора пространства выполнения для отладки, если в пространстве выполнения в настоящее время выполняется команда или скрипт или если скрипт остановился в точке останова, PowerShell открывает сеанс удаленного отладчика для пространства выполнения. Скрипт пространства выполнения можно отлаживать так же, как сценарии удаленного сеанса.
Подключиться к хост-процессу PowerShell можно только в том случае, если вы являетесь администратором на компьютере, на котором выполняется процесс, или выполняете скрипт, который требуется отладить. Кроме того, нельзя ввести хост-процесс, в котором выполняется текущий сеанс PowerShell. Вы можете ввести только хост-процесс, в котором выполняется другой сеанс PowerShell.
Примеры
Эта команда присоединяет отладчик к процессам PowerShell на компьютере. Он использует командлет для получения процессов PowerShell на компьютере и оператор конвейера () для отправки процессов в командлет .
Чтобы указать конкретный процесс PowerShell, используйте параметр ID для .
Пример 6. Присоединение отладчика к текущему процессу на локальном компьютере
Эта команда присоединяет отладчик к текущим процессам PowerShell на компьютере.
Команда использует автоматическую переменную , которая содержит идентификатор процесса текущего процесса PowerShell. Затем он использует оператор конвейера () для отправки идентификатора процесса командлету .
Дополнительные сведения об автоматической переменной см. в разделе about_Automatic_Variables.
Пример 7. Присоединение отладчика к указанному процессу на нескольких компьютерах
Эта команда присоединяет отладчик к процессам MyApp на компьютерах Server01 и Server02.
Команда использует командлет для получения процессов MyApp на компьютерах Server01 и Server02. Он использует оператор конвейера для отправки процессов в командлет , который подключает отладчики.
Пример 8. Присоединение отладчика к процессу, использующим параметр InputObject
Эта команда присоединяет отладчик к процессам PowerShell на локальном компьютере.
Первая команда использует командлет для получения процессов PowerShell на компьютере. Полученный объект процесса сохраняется в переменной с именем .
Вторая команда использует параметр InputObject командлета для отправки объекта процесса в переменную .
Примеры
Эта команда присоединяет отладчик к процессам PowerShell на компьютере. Для получения процессов PowerShell на компьютере используется командлет , а для отправки процессов в командлет используется оператор конвейера ().
Чтобы указать конкретный процесс PowerShell, используйте параметр ID .
Пример 6. Присоединение отладчика к текущему процессу на локальном компьютере
Эта команда присоединяет отладчик к текущим процессам PowerShell на компьютере.
Команда использует автоматическую переменную, которая содержит идентификатор текущего процесса PowerShell. Затем он использует оператор конвейера () для отправки идентификатора процесса командлету .
Дополнительные сведения об автоматической переменной см. в разделе about_Automatic_Variables.
Пример 7. Присоединение отладчика к процессу, использующего параметр InputObject
Эта команда присоединяет отладчик к процессам PowerShell на локальном компьютере.
Первая команда использует командлет для получения процессов PowerShell на компьютере. Он сохраняет результирующий объект процесса в переменной с именем .
Вторая команда использует параметр InputObject командлета для отправки объекта процесса в переменную .