Настройка visual studio code для powershell
Развертывание модуля PowerShell с использованием Tasks в Visual Studio Code
Когда мы пишем скрипты или функции, чаще всего для этого мы создаем какую-либо структуру папок (Plaster?) и уже в ней сохраняем наши .ps1 и .psm1 и (возможно, многочисленные) тестовые и вспомогательные файлы.
Закончив с написанием кода, мы организуем рабочие файлы в виде модуля, создав необходимый манифест и копируем все необходимые компоненты в определенный каталог, чтобы они были доступны в среде PowerShell (скорее всего это будет C:\Program Files\WindowsPowerShell\Modules).
Одним из вариантов автоматизации этой операции будет использование функционала Tasks в Visual Studio Code.
Module
Предположим, мы решили заняться разработкой модуля с именем TheModule в каталоге C:\Scripts.
Для начала мы создадим папку TheModule:
Код нужной нам функции мы разместим в файле TheModule.psm1.
Пусть это будет следующая функция:
Теперь нам нужно создать манифест. Создавать мы его будем при помощи командлета New-ModuleManifest. Однако, чтобы не вводить всю команду заново каждый раз при обновлении или изменении модуля, предлагаю сохранить ее в файле _helper.ps1.
Выглядеть она будет так:
Запустив вышеприведенный код, мы создадим файл TheModule.psd1 в каталоге C:\Scripts\TheModule.
Теперь нам нужно скопировать этот модуль в каталог C:\Program Files\WindowsPowerShell\Modules. Для этого мы создадим задачу.
Script
Представлять из себя она будет PowerShell-скрипт для удаления предыдущей версии модуля из C:\Program Files\WindowsPowerShell\Modules и копирования в него текущей версии.
Так как вспомогательные файлы в этом каталоге будут лишними, из копирования мы их исключим.
Сам скрипт мы расположим в файле _deployModule.ps1.
Текст скрипта будет следующим:
В первой строке мы удаляем весь модуль из папки назначения, во второй создаем новую папку TheModule, а в третьей копируем в нее все файлы с расширениями .psd1, .psm1 и .ps1 за исключением тех, что начинаются с символа подчеркивания.
Теперь перейдем непосредственно к созданию задачи.
Результатом станет создание файла tasks.json в подкаталоге .vscode и его открытие для редактирования.
В качестве примера в файле tasks.json уже будет приведена задача с именем echo. Добавим к ней еще одну.
Нам потребуется указать парметры taskName, type и command.
В качестве значения taskName мы укажем DeployModule.
Параметр type мы определим как shell. Это означает, что команда будет выполнена в самой оболочке, в отличие от значения process, когда задача выполняется в виде отдельного процесса.
Файл tasks.json будет выглядеть следующим образом:
Теперь, сохранив файл tasks.json, мы можем использовать созданную нами задачу.
Для того, чтобы более на получать предложений о сканировании результатов выполнения задачи, вместо Continue without task scanning вы можете указать Never scan the task output, что приведет к добавлению строки
к определению задачи в файле tasks.json, тем самым предотвращая появление подобных запросов.
В итоге файл tasks.json будет выглядеть следующим образом:
Кроме использования меню Tasks, вы можете выполнить нужное вам действие, нажав сочетание клавиш Ctrl + Shift + P, вызвав тем самым меню команд, и введя tasks, после чего вам будут предожены все действия, содержащие слово tasks в своем названии.
Shell
После копирования модуля в каталог C:\Program Files\WindowsPowerShell\Modules содержащиеся в нем функции будут доступны в консоли PowerShell. Однако, если вы обновили содержимое модуля и скопировали его измененную версию поверх предыдущей, консоль все еще будет будет использовать более раннюю его версию.
Для того, чтобы обновить определения функций модуля без закрытия и повторного открытия консоли, мы можем воспользоваться командлетом Import-Module с параметром -Force. Например, так:
Visual Studio Code (VS Code) — это кросс-платформенный редактор скриптов, созданный корпорацией Майкрософт. Наряду с расширением PowerShell он предоставляет широкие интерактивные возможности редактирования скриптов, упрощая написание надежных скриптов PowerShell. Редактор Visual Studio Code с расширением PowerShell рекомендуется использовать для написания сценариев PowerShell.
Он поддерживает следующие версии PowerShell:
- PowerShell 7.0 и последующие версии (Windows, macOS и Linux);
- Windows PowerShell 5.1 (только для Windows).
Visual Studio Code отличается от Visual Studio.
Начало работы
Перед запуском убедитесь, что оболочка PowerShell установлена в системе. Сведения о современных рабочих нагрузках для Windows, macOS и Linux см. по следующим ссылкам:
Сведения о традиционных рабочих нагрузках Windows PowerShell см. в разделе Установка Windows PowerShell.
Интегрированная среда сценариев Windows PowerShell по-прежнему доступна для Windows, но функции для нее больше не разрабатываются. Интегрированная среда сценариев (ISE) работает только с PowerShell 5.1 и более ранних версий. Как компонент Windows эта среда по-прежнему официально поддерживается для внесения критически важных исправлений, связанных с безопасностью и обслуживанием. Пока что мы не планируем удалять ее из Windows.
Установка VS Code и расширения PowerShell
Установите Visual Studio Code. Дополнительные сведения см. в статье Setting up Visual Studio Code (Настройка Visual Studio Code).
Доступны инструкции по установке на каждой платформе:
Установите расширение PowerShell.
Например, чтобы создать файл, выберите Файл > Создать. Чтобы сохранить его, выберите Файл > Сохранить и укажите имя файла, например HelloWorld.ps1 . Чтобы закрыть файл, щелкните X рядом с его именем. Чтобы выйти из VSCode, выберите Файл > Выход.
Установка расширения PowerShell в системах с ограниченным доступом
Эта проблема может возникать, когда политика выполнения PowerShell задается групповой политикой Windows. Чтобы вручную утвердить службы редактора PowerShell и, следовательно, расширение PowerShell для VSCode, откройте командную строку PowerShell и выполните следующую команду:
Вы увидите подсказку Не удается проверить издателя. Вы действительно хотите запустить эту программу? Введите A для запуска файла. Затем откройте VSCode и убедитесь, что расширение PowerShell работает правильно. Если у вас все еще есть проблемы с началом работы, сообщите нам об этом на Раздел с описанием проблем на GitHub.
Выбор версии PowerShell для использования с расширением
Благодаря одновременной установке PowerShell и Windows PowerShell теперь можно использовать определенную версию PowerShell с расширением PowerShell. Этот компонент проверяет несколько известных расположений в разных операционных системах, чтобы найти установки PowerShell.
Выберите версию, сделав следующее:
- Откройте палитру команд в Windows и Linux ( CTRL + SHIFT + P ). В macOS нажмите клавиши CMD + SHIFT + P .
- Выполните поиск по слову Сеанс.
- Щелкните PowerShell: Show Session Menu (PowerShell: показать меню сеансов).
- Выберите нужную версию PowerShell в списке.
Если вы установили PowerShell в нетипичном расположении, оно может первоначально не отобразиться в меню сеансов. Вы можете расширить меню сеансов, добавив собственные пользовательские пути, как описано ниже.
Меню сеансов PowerShell также можно открыть, щелкнув номер версии, который показан зеленым шрифтом в правом нижнем углу строки состояния.
Параметры конфигурации для Visual Studio Code
Прежде всего, если вы не знаете, как изменить параметры в VS Code, мы рекомендуем ознакомиться с документацией по параметрам Visual Studio Code.
После этого вы сможете добавить параметры конфигурации в settings.json .
Если вы не хотите, чтобы эти параметры влияли на все типы файлов, в VS Code можно задавать конфигурации для каждого языка отдельно. Создать параметр для конкретного языка можно, поместив параметры в поле [<language-name>] . Пример:
Дополнительные сведения о кодировке файлов в VS Code см. в этой статье. Также ознакомьтесь со статьей Репликация функций интегрированной среды скриптов в VS Code, в которой даны рекомендации по настройке VS Code для редактирования в PowerShell.
Добавление собственных путей PowerShell в меню сеансов
В меню сеанса можно добавить другие пути к исполнимому файлу PowerShell с помощью параметра Visual Studio Code: powershell.powerShellAdditionalExePaths .
Добавьте элемент в список powershell.powerShellAdditionalExePaths или создайте список, если его нет в settings.json :
Каждый элемент должен иметь следующее:
- exePath : Путь к исполняемому файлу pwsh или powershell .
- versionName : Текст, который будет отображаться в меню сеансов.
Вы можете задать используемую версию PowerShell по умолчанию, задав параметр powershell.powerShellDefaultVersion для текста, отображаемого в меню сеансов ( versionName в последнем параметре):
Задав этот параметр, перезапустите VSCode или перезагрузите текущее окно VSCode с помощью действия Developer: Reload Window палитры команд:
Открыв меню сеансов, вы увидите дополнительные версии PowerShell.
Если вы создаете PowerShell из исходного кода, это отличный способ протестировать локальную сборку PowerShell.
Отладка с помощью 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 создаст каталог и файл .vscode\launch.json в корневой папке рабочей области, где будет храниться конфигурация отладки. Если ваши файлы хранятся в репозитории Git, скорее всего, вы захотите зафиксировать файл launch.json . Содержимое файла launch.json :
Этот файл представляет типичные сценарии отладки. При открытии его в редакторе отображается кнопка Добавить конфигурацию. Можете нажать ее, чтобы добавить дополнительные конфигурации отладки PowerShell. Одной из полезных конфигураций является PowerShell: Launch Script (Запустить сценарий). С помощью этой конфигурации можно указать файл с дополнительными аргументами, которые используются при каждом нажатии клавиши F5 , независимо от того, какой файл активен в редакторе.
После задания конфигурации отладки вы можете указать конфигурацию, используемую во время сеанса отладки, выбрав ее в раскрывающемся списке конфигураций отладки на панели инструментов представления Отладка.
Устранение проблем с расширением PowerShell
Если у вас возникли проблемы с использованием VS Code для разработки скриптов PowerShell, ознакомьтесь с руководством по устранению неполадок на сайте GitHub.
Полезные ресурсы
Существует несколько видео и записей блогов, которые могут оказаться полезными при начале работы с расширением PowerShell для VS Code:
Видео
Записи блога
Исходный код проекта расширения PowerShell
Исходный код расширения PowerShell доступен на GitHub.
Если вы хотите принять участие в проекте в качестве разработчика, отправьте запрос на вытягивание. Чтобы приступить к работе, следуйте указаниям из документации для разработчиков на сайте GitHub.
В текущей версии Visual Studio Code 1.8.1 в качестве встроенного терминала, при использовании его в Microsoft Windows, по умолчанию используется интерпретатор комманд cmd.exe. Пользователям, знакомым с возможностями PowerShell, скорее всего, будет удобнее использовать в качестве встроенного терминала именно PowerShell, а не cmd.exe.
На этот случай Visual Studio Code не ограничивает пользователя в выборе используемого интерпретатора комманд, поэтому встроенный терминал может быть легко заменён на PowerShell. Для этого необходимо внести изменения в файл пользовательских настроек settings.json или, при желании внести изменения, затрагивающие только выбранную рабочую среду, в файл настроек этой рабочей среды:
Подробнее о настройке встроенного терминала можно прочитать в официальной документации Visual Studio Code здесь.
Другие заметки
Использование Grav CMS со встроенным веб-сервером PHP
Одной из полезных возможностей, добавленных в Grav CMS 1.1.10, стала поддержка работы системы управления контентом на встроенном веб-сервере PHP. Однако разработчики, использующие для запуска встроенного веб-сервера метод, описанный в заметке Удобный запуск встроенного веб-сервера PHP в Microsoft Windows, сталкиваются с проблемой.
Приведение значения переменной к типу Boolean в PHP
Приведение значения переменной к типу Boolean является распространённой задачей при разработке на языке PHP. Однако в ряде случаев, выполнения простого приведения типа может быть недостаточно.
Сайт создан и поддерживается мною с целью сохранения и распространения в свободном доступе опубликованных на нём материалов. Авторство разработок, текстов и изображений, принадлежит мне, если иное не указано отдельно.
При копировании материалов с сайта, не забывайте о важности обратных ссылок.
Размещение обратной индексируемой ссылки показывает интерес к содержанию сайта, что мотивирует к работе над новыми материалами.
Поскольку мне всё равно пришлось ставить Visual Studio Community для того, чтобы установить Windows Kits для работы с WinAPI, то я решил не использовать MingW, а доустановить C++ build tools и использовать их для компиляции. В этом случае придётся переделать задачи (tasks) и настройки VSCode.
Хорошее описание нашёл здесь, его и буду использовать в данной заметке.
Нам потребуется
1. Естественно нам потребуется сама программа VSCode.
2. В Visual Studio Community должен быть установлен компонент Desktop development with C++ :
Чтобы проверить успешную установку, достаточно вызвать Developer Command Prompt for VS 2019 (файл VsDevCmd.bat ) из Пуска. Там нужно запустить файл cl.exe . Вывод консоли должен быть без ошибок:
3. Для VSCode должно быть установлено дополнение (расширение) Microsoft C/C++
Настройка
4. В Проводнике открываем рабочую папку проекта и, удерживая Shift , нажимаем правую кнопку мыши, после чего выбираем Open PowerShell window here
5. В открывшемся окошке PowerShell запускаем VSCode, для этого нужно набрать code . и нажать Enter :
9. Открываем палитру команд с помощью комбинации клавиш Ctrl + Shift + P
10. Список большой, поэтому проще ввести часть слова и выбрать нужную команду Edit Configurations UI из списка:
11. В конфигурации необходимо проверить, а, при необходимости, установить путь для компилятора:
12. Внесём изменения в файл settings.json :
13. Ранее я уже создавал файл Задач tasks.json, поэтому сейчас я добавлю к нему новые строчки:
14. Чтобы у нас была возможность запустить проект на отладку, можно использовать файл launch.json . Но я не хочу создавать такой файл для каждого проекта каждый раз, поэтому сделаю глобальную конфигурацию. Для этого я добавлю строчки в файл settings.json :
Благодаря этому, при нажатии F5 , проект будет откомпилирован, а потом запущен сразу после этого. Просто запустить, без отладки, можно комбинацией Ctrl + F5
Читайте также: