Uso de Visual Studio Code para la edición y la depuración de forma remotaUsing Visual Studio Code for remote editing and debugging

Aquellos usuarios que están familiarizados con el ISE pueden recordar que era posible ejecutar psedit file.ps1 desde la consola integrada para abrir archivos, locales o remotos, directamente en el 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.

Esta característica también está disponible en la extensión de PowerShell para VSCode.This feature is also available in the PowerShell extension for VSCode. Esta guía muestra cómo hacerlo.This guide shows you how to do it.

PrerequisitesPrerequisites

En esta guía se da por supuesto que tiene lo siguiente:This guide assumes that you have:

  • un recurso remoto (p. ej.: una máquina virtual, un contenedor) al que tiene acceso.A remote resource (ex: a VM, a container) that you have access to
  • PowerShell ejecutándose en él y en el equipo hostPowerShell running on it and the host machine
  • VSCode y la extensión de PowerShell para VSCodeVSCode and the PowerShell extension for VSCode

Esta característica funciona en Windows PowerShell y PowerShell Core.This feature works on Windows PowerShell and PowerShell Core.

Esta característica también funciona al conectarse a un equipo remoto a través de WinRM, PowerShell Direct o SSH.This feature also works when connecting to a remote machine via WinRM, PowerShell Direct, or SSH. Si desea usar SSH, pero está usando Windows, consulte la versión Win32 de SSH.If you want to use SSH, but are using Windows, check out the Win32 version of SSH!

Importante

Los comandos Open-EditorFile y psedit solo funcionan en la consola integrada de PowerShell que la extensión de PowerShell crea para VSCode.The Open-EditorFile and psedit commands only work in the PowerShell Integrated Console created by the PowerShell extension for VSCode.

Ejemplos de usoUsage examples

Estos ejemplos muestran la depuración y la edición remotas desde un equipo MacBook Pro a una máquina virtual Ubuntu que se ejecuta en Azure.These examples show remote editing and debugging from a MacBook Pro to an Ubuntu VM running in Azure. El proceso es idéntico en Windows.The process is identical on Windows.

Edición de archivo local con Open-EditorFileLocal file editing with Open-EditorFile

Con la extensión de PowerShell para VSCode iniciada y la consola integrada de PowerShell abierta, podemos escribir Open-EditorFile foo.ps1 o psedit foo.ps1 para abrir el archivo foo.ps1 local directamente en el 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.

Open-EditorFile foo.ps1 funciona localmente

Nota

El archivo foo.ps1 ya debería existir.The file foo.ps1 must already exist.

Desde ahí, podemos hacer lo siguiente:From there, we can:

  • Agregar puntos de interrupción en el medianil.Add breakpoints to the gutter

    Adición de un punto de interrupción en el medianil

  • Presionar F5 para depurar el script de PowerShell.Hit F5 to debug the PowerShell script.

    Depuración del script de PowerShell local

Durante la depuración, puede interactuar con la consola de depuración y consultar las variables en el ámbito de la izquierda y todas las demás herramientas de depuración estándar.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.

Edición de archivo remoto con Open-EditorFileRemote file editing with Open-EditorFile

Ahora veamos la edición y la depuración de un archivo remoto.Now let's get into remote file editing and debugging. Los pasos son prácticamente los mismos, solo hay una cosa que debemos hacer primero: escribir nuestra sesión de PowerShell en el 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.

Hay un cmdlet para hacerlo.There's a cmdlet for to do so. Se llama Enter-PSSession.It's called Enter-PSSession.

La explicación desglosada del cmdlet es:The watered down explanation of the cmdlet is:

  • Enter-PSSession -ComputerName foo inicia una sesión a través de WinRMEnter-PSSession -ComputerName foo starts a session via WinRM
  • Enter-PSSession -ContainerId foo y Enter-PSSession -VmId foo inician una sesión a través de PowerShell DirectEnter-PSSession -ContainerId foo and Enter-PSSession -VmId foo start a session via PowerShell Direct
  • Enter-PSSession -HostName foo inicia una sesión a través de SSHEnter-PSSession -HostName foo starts a session via SSH

Para más información, consulte la documentación para Enter-PSSession.For more information, see the documentation for Enter-PSSession.

Como vamos desde macOS a una máquina virtual Ubuntu en Azure, usamos SSH para la comunicación remota.Since we are going from macOS to an Ubuntu VM in Azure, we are using SSH for remoting.

En primer lugar, ejecute Enter-PSSession en la consola integrada.First, in the Integrated Console, run Enter-PSSession. Se conecta a la sesión remota cuando [<hostname>] aparece a la izquierda del símbolo del sistema.You're connected to the remote session when [<hostname>] shows up to the left of your prompt.

Llamada a Enter-PSSession para conectarse a una sesión remota

Ahora, podemos completar los mismos pasos que llevaríamos a cabo si estuviéramos editando un script local.Now, we can do the same steps as if we are editing a local script.

  1. Ejecute Open-EditorFile test.ps1 o psedit test.ps1 para abrir el archivo test.ps1 remoto.Run Open-EditorFile test.ps1 or psedit test.ps1 to open the remote test.ps1 file

Edición del script en el sistema remoto

  1. Editar el archivo/establecer los puntos de interrupciónEdit the file/set breakpoints

    Edición y establecimiento de puntos de interrupción

  2. Iniciar la depuración (F5) del archivo remotoStart debugging (F5) the remote file

    Depuración del script remoto

Si tiene algún problema, puede abrir los problemas que hay en el repositorio de GitHub.If you have any problems, you can open issues in the GitHub repo.