Uso di Visual Studio Code per la modifica e il debug remotiUsing Visual Studio Code for remote editing and debugging

Gli utenti che hanno familiarità con l'ambiente ISE ricorderanno forse che è possibile eseguire psedit file.ps1 dalla console integrata per aprire i file, locali o remoti, direttamente nell'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.

Questa funzionalità è disponibile anche nell'estensione di PowerShell per VSCode.This feature is also available in the PowerShell extension for VSCode. Questa guida illustra come eseguire queste operazioni.This guide shows you how to do it.

PrerequisitesPrerequisites

Questa guida presuppone che si disponga di:This guide assumes that you have:

  • Una risorsa remota ( ad esempio una macchina virtuale o un contenitore) a cui si ha accessoA remote resource (ex: a VM, a container) that you have access to
  • PowerShell in esecuzione nella risorsa remota e nel computer hostPowerShell running on it and the host machine
  • VSCode e l'estensione di PowerShell per VSCodeVSCode and the PowerShell extension for VSCode

Questa funzionalità funziona in Windows PowerShell e PowerShell Core.This feature works on Windows PowerShell and PowerShell Core.

Questa funzionalità funziona anche quando ci si connette a un computer remoto tramite WinRM, PowerShell Direct o SSH.This feature also works when connecting to a remote machine via WinRM, PowerShell Direct, or SSH. Se si desidera usare SSH, ma si usa Windows, considerare la versione Win32 di SSH.If you want to use SSH, but are using Windows, check out the Win32 version of SSH!

Importante

I comandi Open-EditorFile e psedit funzionano solo nella console integrata di PowerShell creata dall'estensione di PowerShell per VSCode.The Open-EditorFile and psedit commands only work in the PowerShell Integrated Console created by the PowerShell extension for VSCode.

Esempi di utilizzoUsage examples

Questi esempi illustrano le operazioni di modifica e debug remoti da un MacBook Pro a una macchina virtuale Ubuntu in esecuzione in Azure.These examples show remote editing and debugging from a MacBook Pro to an Ubuntu VM running in Azure. Il processo è identico in Windows.The process is identical on Windows.

Modifica dei file locali con Open-EditorFileLocal file editing with Open-EditorFile

Con l'estensione di PowerShell per VSCode avviata e la console integrata di PowerShell aperta, è possibile digitare Open-EditorFile foo.ps1 o psedit foo.ps1 per aprire il file locale foo.ps1 direttamente nell'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 funziona localmente

Nota

Il file foo.ps1 deve essere già presente.The file foo.ps1 must already exist.

Da qui, è possibile:From there, we can:

  • Aggiungere punti di interruzione alla barra di navigazioneAdd breakpoints to the gutter

    Aggiunta di un punto di interruzione alla barra di navigazione

  • Premere F5 per eseguire il debug dello script di PowerShell.Hit F5 to debug the PowerShell script.

    debug dello script di PowerShell locale

Durante il debug, è possibile interagire con la console di debug, verificare le variabili nell'ambito a sinistra e tutti gli altri gli strumenti standard di debug.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.

Modifica dei file remoti con Open-EditorFileRemote file editing with Open-EditorFile

È ora possibile passare alla modifica e al debug dei file remoti.Now let's get into remote file editing and debugging. I passaggi sono quasi gli stessi, occorre solo fare prima di tutto una cosa: avviare la sessione di PowerShell nel server 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.

È disponibile un cmdlet per eseguire questa operazione.There's a cmdlet for to do so. È denominato Enter-PSSession.It's called Enter-PSSession.

La spiegazione semplificata del cmdlet è:The watered down explanation of the cmdlet is:

  • Enter-PSSession -ComputerName foo avvia una sessione tramite Gestione remota WindowsEnter-PSSession -ComputerName foo starts a session via WinRM
  • Enter-PSSession -ContainerId foo e Enter-PSSession -VmId foo avviano una sessione tramite PowerShell DirectEnter-PSSession -ContainerId foo and Enter-PSSession -VmId foo start a session via PowerShell Direct
  • Enter-PSSession -HostName foo avvia una sessione tramite SSHEnter-PSSession -HostName foo starts a session via SSH

Per altre informazioni, vedere la documentazione di Enter-PSSession.For more information, see the documentation for Enter-PSSession.

Poiché si sta passando da macOS a una macchina virtuale Ubuntu in Azure, per la comunicazione remota si userà SSH.Since we are going from macOS to an Ubuntu VM in Azure, we are using SSH for remoting.

Nella console integrata eseguire prima di tutto Enter-PSSession.First, in the Integrated Console, run Enter-PSSession. Quando [<hostname>] viene visualizzato a sinistra del prompt, si è connessi alla sessione remota.You're connected to the remote session when [<hostname>] shows up to the left of your prompt.

Chiamare Enter-PSSession per connettersi a una sessione remota

Ora è possibile eseguire gli stessi passaggi che si eseguono per modificare uno script locale.Now, we can do the same steps as if we are editing a local script.

  1. Eseguire Open-EditorFile test.ps1 o psedit test.ps1 per aprire il file remoto test.ps1Run Open-EditorFile test.ps1 or psedit test.ps1 to open the remote test.ps1 file

Modificare lo script nel sistema remoto

  1. Modificare i file/impostare punti di interruzioneEdit the file/set breakpoints

    Modificare e impostare punti di interruzione

  2. Avviare il debug del file remoto (F5)Start debugging (F5) the remote file

    Debug dello script remoto

Se si verificano problemi, è possibile segnalarli nel repository GitHub.If you have any problems, you can open issues in the GitHub repo.