Usando o Visual Studio Code para edição e depuração remotasUsing Visual Studio Code for remote editing and debugging

Para aqueles que se familiarizaram com o ISE, talvez se lembrem que podiam executar psedit file.ps1 no console integrado para abrir arquivos locais ou remotos diretamente no ISE.For those of you that are familiar with the ISE, you may recall that you could run psedit file.ps1 from the integrated console to open files - local or remote - right in the ISE.

Esse recurso também está disponível na extensão do PowerShell para VSCode.This feature is also available in the PowerShell extension for VSCode. Este guia mostra como fazê-lo.This guide shows you how to do it.

PrerequisitesPrerequisites

Este guia pressupõe que você tenha:This guide assumes that you have:

  • Um recurso remoto (p.ex.: uma VM, um contêiner) ao qual você tenha acessoA remote resource (ex: a VM, a container) that you have access to
  • O PowerShell em execução nesse recurso e no computador hostPowerShell running on it and the host machine
  • VSCode e a extensão do PowerShell para VSCodeVSCode and the PowerShell extension for VSCode

Esse recurso funciona no Windows PowerShell e no PowerShell Core.This feature works on Windows PowerShell and PowerShell Core.

Esse recurso também funciona ao se conectar a um computador remoto via WinRM, PowerShell Direct ou SSH.This feature also works when connecting to a remote machine via WinRM, PowerShell Direct, or SSH. Se você quer usar o SSH, mas está usando o Windows, consulte a versão Win32 do SSH!If you want to use SSH, but are using Windows, check out the Win32 version of SSH!

Importante

Os comandos Open-EditorFile e psedit funcionam somente no Console integrado do PowerShell criado pela extensão do PowerShell para VSCode.The Open-EditorFile and psedit commands only work in the PowerShell Integrated Console created by the PowerShell extension for VSCode.

Exemplos de usoUsage examples

Esses exemplos mostram a edição e a depuração remotas de uma VM Ubuntu em execução no Azure por um MacBook Pro.These examples show remote editing and debugging from a MacBook Pro to an Ubuntu VM running in Azure. O processo é idêntico no Windows.The process is identical on Windows.

Edição de arquivo local com o Open-EditorFileLocal file editing with Open-EditorFile

Com a extensão do PowerShell para VSCode iniciada e o Console Integrado do PowerShell aberto, podemos digitar Open-EditorFile foo.ps1 ou psedit foo.ps1 para abrir o arquivo foo.ps1 local diretamente no editor.With the PowerShell extension for VSCode started and the PowerShell Integrated Console opened, we can type Open-EditorFile foo.ps1 or psedit foo.ps1 to open the local foo.ps1 file right in the editor.

O arquivo foo.ps1 no Open-EditorFile funciona localmente

Observação

O arquivo foo.ps1 já deve existir.The file foo.ps1 must already exist.

A partir daí, podemos:From there, we can:

  • Adicionar pontos de interrupção à medianizAdd breakpoints to the gutter

    Adicionar um ponto de interrupção à medianiz

  • Pressione F5 para depurar o script do PowerShell.Hit F5 to debug the PowerShell script.

    Depurar o script local do PowerShell

Durante a depuração, você pode interagir com o console de depuração, ver as variáveis no escopo à esquerda e todas as outras ferramentas de depuração padrão.While debugging, you can interact with the debug console, check out the variables in the scope on the left, and all the other standard debugging tools.

Edição de arquivo remoto com o Open-EditorFileRemote file editing with Open-EditorFile

Agora, vamos abordar a edição e a depuração de arquivo remoto.Now let's get into remote file editing and debugging. As etapas são praticamente as mesmas, com exceção de um pequeno detalhe: precisamos informar nossa sessão do PowerShell ao servidor remoto.The steps are nearly the same, there's just one thing we need to do first - enter our PowerShell session to the remote server.

Há um cmdlet para fazer isso.There's a cmdlet for to do so. Ele se chama Enter-PSSession.It's called Enter-PSSession.

A explicação básica do cmdlet é esta:The watered down explanation of the cmdlet is:

  • Enter-PSSession -ComputerName foo inicia uma sessão via WinRMEnter-PSSession -ComputerName foo starts a session via WinRM
  • Enter-PSSession -ContainerId foo e Enter-PSSession -VmId foo iniciam uma sessão via PowerShell DirectEnter-PSSession -ContainerId foo and Enter-PSSession -VmId foo start a session via PowerShell Direct
  • Enter-PSSession -HostName foo inicia uma sessão via SSHEnter-PSSession -HostName foo starts a session via SSH

Para saber mais, veja a documentação para o Enter-PSSession.For more information, see the documentation for Enter-PSSession.

Como estamos passando de um macOS para uma VM Ubuntu no Azure, vamos usar SSH para a comunicação remota.Since we are going from macOS to an Ubuntu VM in Azure, we are using SSH for remoting.

Primeiro, no Console Integrado, execute Enter-PSSession.First, in the Integrated Console, run Enter-PSSession. Você estará conectado à sessão remota quando o [<hostname>] aparecer à esquerda de seu prompt.You're connected to the remote session when [<hostname>] shows up to the left of your prompt.

Chame Enter-PSSession para conectar a uma sessão remota

Agora podemos executar as mesmas etapas como se estivéssemos editando um script local.Now, we can do the same steps as if we are editing a local script.

  1. Execute Open-EditorFile test.ps1 ou psedit test.ps1 para abrir o arquivo test.ps1 remotoRun Open-EditorFile test.ps1 or psedit test.ps1 to open the remote test.ps1 file

Edite o script no sistema remoto

  1. Edite os pontos de interrupção do arquivo/conjuntoEdit the file/set breakpoints

    Edite e defina os pontos de interrupção

  2. Comece a depurar (F5) o arquivo remotoStart debugging (F5) the remote file

    Depurar o script remoto

Em caso de problemas, você pode abrir ocorrências no repositório GitHub.If you have any problems, you can open issues in the GitHub repo.