Usare i punti di interruzione negli script di Windows PowerShell
Un punto di interruzione sospende uno script e fornisce un prompt interattivo. Al prompt interattivo, è possibile eseguire query o modificare i valori delle variabili e, quindi, continuare lo script. I punti di interruzione vengono usati per risolvere i problemi relativi agli script quando il relativo comportamento non è quello previsto.
A un prompt Windows PowerShell, è possibile impostare i punti di interruzione tramite il cmdlet Set-PSBreakPoint. I punti di interruzione possono essere impostati in base alla riga dello script, a uno specifico comando in uso o a una specifica variabile in uso. Nell'esempio seguente viene illustrato come impostare un punto di interruzione in una riga specifica di uno script:
Set-PSBreakPoint -Script "MyScript.ps1" -Line 23
Quando si imposta un punto di interruzione in base a una riga, è necessario prestare attenzione in caso di modifica dello script. Quando si modifica lo script, è infatti possibile aggiungere o rimuovere righe. In caso, il punto di interruzione non influirà sullo stesso codice previsto inizialmente.
Nell'esempio seguente viene illustrato come impostare un punto di interruzione per uno specifico comando:
Set-PSBreakPoint -Command "Set-ADUser" -Script "MyScript.ps1"
Quando si imposta un punto di interruzione in base a un comando, è possibile includere caratteri jolly. È ad esempio possibile usare il valore *-ADUser per attivare un punto di interruzione per Get-ADUser, Set-ADUser, New-ADUser e Remove-ADUser.
Per impostare un punto di interruzione per una specifica variabile, effettuare le operazioni seguenti:
Set-PSBreakPoint -Variable "computer" -Script "MyScript.ps1" -Mode ReadWrite
Per le variabili, è possibile usare il parametro -Mode in modo da specificare se si desidera che l'interruzione venga eseguita quando il valore della variabile viene letto oppure viene scritto, oppure quando viene letto e scritto. I valori validi per questo parametro sono Read, Write e ReadWrite.
L'azione predefinita per Set-PSBreakPoint è Interrompi, che fornisce il prompt interattivo. È tuttavia possibile usare il parametro -Action per specificare il codice da eseguire in alternativa. In questo modo, sarà possibile eseguire operazioni complesse, ad esempio valutare i valori delle variabili e procedere all'interruzione solo se il valore esaminato non rientra in un determinato intervallo.
Nota
I punti di interruzione vengono archiviati in memoria e non come parte dello script. Inoltre, non vengono condivisi tra i diversi prompt di Windows PowerShell e vengono rimossi automaticamente alla chiusura del prompt.
PowerShell ISE
In Windows PowerShell ISE (Integrated Scripting Environment), è possibile impostare i punti di interruzione in base alla riga. Le opzioni correlate ai punti di interruzione sono disponibili nel menu Debug. Le righe configurate come punti di interruzione vengono evidenziate in modo che sia più semplice identificarle. In Windows PowerShell ISE, inoltre, in caso di aggiunta o rimozione di righe dello script, i punti di interruzione vengono aggiornati automaticamente in base al numero di riga corretto.
Visual Studio Code
Microsoft Visual Studio Code consente di impostare e usare punti di interruzione con opzioni più avanzate rispetto a quelle offerte da PowerShell ISE. È possibile configurare punti di interruzione condizionali, ovvero punti di interruzione che vengono attivati quando le variabili non rientrano in un intervallo o corrispondono a un valore specifico.
Tra l'altro, in Visual Studio Code è più semplice individuare informazioni sul contenuto delle variabili. Dopo l'attivazione di un punto di interruzione e l'apertura del debugger, risulterà visibile una sezione Variabili in cui è riportato il contenuto della variabile. In questo modo, non sarà necessario effettuare interrogazioni.