Большинство администраторов для написания своих PowerShell скриптов используют встроенную среду PowerShell ISE (Integrated Scripting Environment). Но на данный момент Microsoft практически перестала развивать PowerShell ISE и рекомендует использовать более мощный, удобный, гибкий и бесплатный инструмент Visual Studio Code (VS Code). В этой статье мы рассмотрим, как установить, настроить и использовать Visual Studio Code вместо Powershell ISE для запуска ваших PowerShell команд, а также разработки и тестирования сложных PowerShell скриптов.
VS Code является кроссплатформенной средой разработки, для которой имеется огромное количество расширения, с помощью который можно создавать код практически на любом языке программирования. В VS Code есть встроенная поддержка Git, высокие возможности по работе с кодом и его отладки.
Вы можете бесплатно скачать VSCode по ссылке: https://code.visualstudio.com/ Скачайте установочный файл VSCodeSetup-x64 (около 53 Мб) и запустите его.
Установка VSCode проблем не вызывает. При установке рекомендуется добавить пути к Visual Studio Code в переменные окружения PATH.
.
После запуска Visual Studio Code вам нужно установить специальное бесплатное расширение для поддержки языка PowerShell — ms-vscode.PowerShell (https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell).
Данное расширение добавляет расширенные возможности по работе с кодом PowerShell: подсветка синтаксиса, снипеты, автонадобор команд (IntelliSense), встроенная справка и браузер командлетов, интерактивная отладка скриптов и т.д.
Вы можете установить расширение через меню расширений (Extension) в левом сайдбаре. Выполните поиск по ключу
powershell
и выполните установку расширения
PowerShell: Develop PowerShell scripts in Visual Studio Code
.
Если вы работаете в изолированной сети, вы можете установить расширение из vsix файла. Скачайте файл ms-vscode.PowerShell-2019.5.0.vsix по ссылке выше и установите его через меню Install from VSIX.
Для удобства работы я установил следующие настройки интерфейса VSCode (значок шестеренки в левом нижнем углу).
workbench.colorTheme = PowerShell ISE – цветовая схема максимально напоминает привычную PowerShell ISE
editor.formatOnType = On
editor.formatOnPaste = On
window.zoomLevel = 0
editor.mouseWheelZoom = On
Вы можете задать настройки VSCode через json файл, для этого нажмите кнопку Open Settings (JSON) и можете скопировать эти настройки в виде текста:
{
"workbench.colorTheme": "PowerShell ISE",
"editor.formatOnType": true,
"editor.formatOnPaste": true,
"powershell.integratedConsole.focusConsoleOnExecute": false,
"editor.mouseWheelZoom": true,
"files.defaultLanguage": "powershell",
"editor.fontSize": 12,
"terminal.integrated.fontSize": 12,
"files.encoding": "utf8"
}
Change Language mode
и в списке выберите синтаксис какого языка вы хотите использовать. Выберите PowerShell и значок открытого файла на активной вкладке изменится на иконку PS 
Попробуем использовать возможности VSCode для запуска PowerShell команды и отладки скриптов.
Создадим новый файл проекта (это обычный текстовый файл). Можно одновременно работать с несколькими файлами, они также организованы в виде вкладок, между которыми можно переклчаться.
Наберем простую PS команду для вывода списка процессов
Get-Process
. Как вы видите, благодаря технологии IntelliSense поддерживается автоматический донабор команды по клавише Tab и встроенная справка о доступных параметрах командлета.
Чтобы выполнить одну команду PowerShell, встаньте на нужную строку и нажмите F8. Если нужно выполнить несколько строк кода PowerShell, выделите их в редакторе с помощью мыши и нажмите F8. Результаты выполнения команды содержатся в окне Terminal. Для выполнения всего файла PS1 выберите Terminal -> Run Active File.
Также в окне Terminal вы можете выполнять команды
PowerShell
/
cmd
в интерактивном режиме.
Если в вашем PowerShell коде используются функции, щелкнув по имени функции и выбрав пункт Go to Definition, вы автоматически перейдете к коду функции.
С помощью встроенного отладчика сценариев (Ctrl+Shift+D) при запуске PowerShell скрипта вы можете видеть значения переменных, контрольные значения и устанавливать точки прерывания.
Надеюсь, эта статья станет вашей отправной точкой по изучению и использованию богатых возможностей Visual Studio Code при написании PowerShell скриптов.
Приветствую, может знаете как бороться с ошибками: «: Unable to instantiate; language client undefined.»
16.08.2019 16:43:28 [NORMAL] — Visual Studio Code v1.32.3 64-bit
16.08.2019 16:43:28 [NORMAL] — PowerShell Extension v2019.5.0
16.08.2019 16:43:28 [NORMAL] — Operating System: Windows 64-bit
16.08.2019 16:43:28 [NORMAL] — Path specified by ‘powerShellExePath’ setting — » — not found, reverting to default PowerShell path.
16.08.2019 16:43:28 [NORMAL] — Language server starting —
16.08.2019 16:43:28 [NORMAL] — exe: C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe
16.08.2019 16:43:28 [NORMAL] — args: C:\Users\user\.vscode\extensions\ms-vscode.powershell-2019.5.0\modules\PowerShellEditorServices\Start-EditorServices.ps1 -HostName ‘Visual Studio Code Host’ -HostProfileId ‘Microsoft.VSCode’ -HostVersion ‘2019.5.0’ -AdditionalModules @(‘PowerShellEditorServices.VSCode’) -BundledModulesPath ‘C:\Users\user\.vscode\extensions\ms-vscode.powershell-2019.5.0\modules’ -EnableConsoleRepl -LogLevel ‘Normal’ -LogPath ‘C:\Users\user\.vscode\extensions\ms-vscode.powershell-2019.5.0\logs\1565963008-898abd58-5ad9-460b-a200-3e9cfef952a61565963005879\EditorServices.log’ -SessionDetailsPath ‘C:\Users\user\.vscode\extensions\ms-vscode.powershell-2019.5.0\sessions\PSES-VSCode-274616-461650’ -FeatureFlags @()
16.08.2019 16:43:28 [NORMAL] — powershell.exe started, pid: 276720
16.08.2019 16:43:30 [ERROR] — PowerShell language features are disabled due to an unsupported LanguageMode: ConstrainedLanguage
16.08.2019 16:48:29 [NORMAL] — powershell.exe terminated or terminal UI was closed
16.08.2019 16:48:46 [ERROR] — : Unable to instantiate; language client undefined.
Собственно ошибка у вас одна:
PowerShell language features are disabled due to an unsupported LanguageMode: ConstrainedLanguage
Т.е. яано security проблема.Какая у вас POwerShell ExecutionPolicy, есть ли права админа?
ExecutionPolicy — AllSigned
Прав админа нет у обычной УЗ нет, но можно поднять через локального админа
Добрый день.
После установки Python.
VSCode перестал резолвить классы .NET(типа Не удалось найти тип [System.Windows.Forms.MessageBox].) в PowerShell.
Не подскажете, что может быть?
Нет на сталкивался с таким. Проверьте, кстати, у вас VScode сейчас работает на PowerShell 5.1 или уже на PowerShel Core 6.0+?
На счёт этого:
Как вы видите, благодаря технологии IntelliSense поддерживается автоматический донабор команды по клавише Tab и встроенная справка о доступных параметрах командлета.
По-умолчанию эта сволочь по TABу ничего не перебирает. Набираешь, например, get-co, выскакивает меню как на вашей картинке. А далее или стрелками перебираешь, либо TABом подставляется первое значение из меню. TABом перебирается только в консоле.
IntelliSense можно отключить в консоли powershell:
Set-PSReadlineOption -PredictionSource None
В VSCOde:
By default, tab completion is disabled. Use the editor.tabCompletion setting to enable it. These values exist:
off - (default) Tab completion is disabled.
on - Tab completion is enabled for all suggestions and repeated invocations insert the next best suggestion.
onlySnippets - Tab completion only inserts static snippets which prefix match the current line prefix.
_https://code.visualstudio.com/docs/editor/intellisense#_customizing-intellisense