Set-PSBreakpoint
Imposta un punto di interruzione in una riga, un comando o una variabile.
Sintassi
Set-PSBreakpoint
[-Action <ScriptBlock>]
[[-Column] <Int32>]
[-Line] <Int32[]>
[-Script] <String[]>
[<CommonParameters>]
Set-PSBreakpoint
[-Action <ScriptBlock>]
-Command <String[]>
[[-Script] <String[]>]
[<CommonParameters>]
Set-PSBreakpoint
[-Action <ScriptBlock>]
[[-Script] <String[]>]
-Variable <String[]>
[-Mode <VariableAccessMode>]
[<CommonParameters>]
Descrizione
Il Set-PSBreakpoint
cmdlet imposta un punto di interruzione in uno script o in qualsiasi comando eseguito nella sessione corrente. È possibile usare Set-PSBreakpoint
per impostare un punto di interruzione prima di eseguire uno script o eseguire un comando o durante il debug, quando viene arrestato in un altro punto di interruzione.
Set-PSBreakpoint
impossibile impostare un punto di interruzione in un computer remoto. Per eseguire il debug di uno script in un computer remoto, copiare lo script nel computer locale ed eseguire il debug in locale.
Ogni Set-PSBreakpoint
comando crea uno dei tre tipi di punti di interruzione seguenti:
- Punto di interruzione di riga: imposta i punti di interruzione in corrispondenza di coordinate di riga e colonna specifiche.
- Punto di interruzione dei comandi: imposta i punti di interruzione su comandi e funzioni.
- Punto di interruzione variabile: imposta i punti di interruzione sulle variabili.
È possibile impostare un punto di interruzione su più righe, comandi o variabili in un singolo Set-PSBreakpoint
comando, ma ogni Set-PSBreakpoint
comando imposta un solo tipo di punto di interruzione.
In un punto di interruzione PowerShell interrompe temporaneamente l'esecuzione e assegna il controllo al debugger. Il prompt dei comandi viene modificato in DBG\>
e un set di comandi del debugger diventano disponibili per l'uso. È tuttavia possibile usare il parametro Action per specificare una risposta alternativa, ad esempio condizioni per il punto di interruzione o istruzioni per eseguire attività aggiuntive, ad esempio la registrazione o la diagnostica.
Il Set-PSBreakpoint
cmdlet è uno dei diversi cmdlet progettati per il debug di script di PowerShell.
Per altre informazioni sul debugger di PowerShell, vedere about_Debuggers.
Esempio
Esempio 1: Impostare un punto di interruzione su una riga
Questo esempio imposta un punto di interruzione alla riga 5 nello script Sample.ps1. Quando lo script viene eseguito, l'esecuzione viene arrestata immediatamente prima dell'esecuzione della riga 5.
Set-PSBreakpoint -Script "sample.ps1" -Line 5
Column : 0
Line : 5
Action :
Enabled : True
HitCount : 0
Id : 0
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
Quando si imposta un nuovo punto di interruzione in base al numero di riga, il Set-PSBreakpoint
cmdlet genera un oggetto punto di interruzione di riga (System.Management.Automation.LineBreakpoint) che include l'ID punto di interruzione e il numero di passaggi.
Esempio 2: Impostare un punto di interruzione su una funzione
In questo esempio viene creato un punto di interruzione del comando nella Increment
funzione nel cmdlet Sample.ps1. L'esecuzione dello script viene arrestata immediatamente prima di ogni chiamata alla funzione specificata.
Set-PSBreakpoint -Command "Increment" -Script "sample.ps1"
Command : Increment
Action :
Enabled : True
HitCount : 0
Id : 1
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
Il risultato è un oggetto punto di interruzione comando. Prima dell'esecuzione dello script, il valore della proprietà HitCount è 0.
Esempio 3: Impostare un punto di interruzione su una variabile
In questo esempio viene impostato un punto di interruzione nella variabile Server nello script Sample.ps1. Usa il parametro Mode con un valore ReadWrite per arrestare l'esecuzione quando il valore della variabile viene letto e subito prima della modifica del valore.
Set-PSBreakpoint -Script "sample.ps1" -Variable "Server" -Mode ReadWrite
Esempio 4: Impostare un punto di interruzione in ogni comando che inizia con il testo specificato
In questo esempio viene impostato un punto di interruzione in ogni comando dello script Sample.ps1 che inizia con "write", ad esempio Write-Host
.
Set-PSBreakpoint -Script Sample.ps1 -Command "write*"
Esempio 5: Impostare un punto di interruzione in base al valore di una variabile
Questo esempio arresta l'esecuzione nella DiskTest
funzione nello Test.ps1
script solo quando il valore della $Disk
variabile è maggiore di 2.
Set-PSBreakpoint -Script "test.ps1" -Command "DiskTest" -Action { if ($Disk -gt 2) { break } }
Il valore di Action è un blocco di script che verifica il valore della $Disk
variabile nella funzione.
L'azione usa la break
parola chiave per arrestare l'esecuzione se la condizione viene soddisfatta. L'alternativa (e l'impostazione predefinita) è Continua.
Esempio 6: Impostare un punto di interruzione su una funzione
In questo esempio viene impostato un punto di interruzione nella CheckLog
funzione . Poiché il comando non specifica uno script, il punto di interruzione viene impostato su tutto ciò che viene eseguito nella sessione corrente. Il debugger si interrompe quando viene chiamata la funzione e non quando viene dichiarata.
PS> Set-PSBreakpoint -Command "checklog"
Id : 0
Command : checklog
Enabled : True
HitCount : 0
Action :
function CheckLog {
>> get-eventlog -log Application |
>> where {($_.source -like "TestApp") -and ($_.Message -like "*failed*")}
>>}
>>
PS> Checklog
DEBUG: Hit breakpoint(s)
DEBUG: Function breakpoint on 'prompt:Checklog'
Esempio 7: Impostare punti di interruzione su più righe
In questo esempio vengono impostati tre punti di interruzione di riga nello script Sample.ps1. Imposta un punto di interruzione in corrispondenza della colonna 2 in ognuna delle righe specificate nello script. L'azione specificata nel parametro Action si applica a tutti i punti di interruzione.
PS C:\> Set-PSBreakpoint -Script "sample.ps1" -Line 1, 14, 19 -Column 2 -Action {&(log.ps1)}
Column : 2
Line : 1
Action :
Enabled : True
HitCount : 0
Id : 6
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
Column : 2
Line : 14
Action :
Enabled : True
HitCount : 0
Id : 7
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
Column : 2
Line : 19
Action :
Enabled : True
HitCount : 0
Id : 8
Script : C:\ps-test\sample.ps1
ScriptName : C:\ps-test\sample.ps1
Parametri
-Action
Specifica i comandi che vengono eseguiti a ogni punto di interruzione anziché interrompere l'esecuzione. Immettere un blocco di script contenente i comandi. È possibile usare questo parametro per impostare punti di interruzione condizionali o eseguire altre attività, ad esempio test o registrazione.
Se questo parametro viene omesso o non viene specificata alcuna azione, l'esecuzione si arresta in corrispondenza del punto di interruzione e viene avviato il debugger.
Quando si usa il parametro Action , il blocco script Action viene eseguito in ogni punto di interruzione. L'esecuzione non viene arrestata, a meno che il blocco di script non includa la parola chiave Break. Se si usa la parola chiave Continue nel blocco di script, l'esecuzione riprende fino al punto di interruzione successivo.
Per altre informazioni, vedere about_Script_Blocks, about_Break e about_Continue.
Tipo: | ScriptBlock |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Column
Specifica il numero di colonna della colonna nel file di script in cui l'esecuzione viene arrestata. Immettere solo un numero di colonna. Il valore predefinito è la colonna 1.
Il valore Column viene utilizzato con il valore del parametro Line per specificare il punto di interruzione. Se il parametro Line specifica più righe, il parametro Column imposta un punto di interruzione in corrispondenza della colonna specificata in ognuna delle righe specificate. PowerShell interrompe l'esecuzione prima dell'istruzione o dell'espressione che include il carattere in corrispondenza della riga e della posizione della colonna specificata.
Le colonne vengono conteggiate dall'inizio del margine superiore sinistro a partire dal numero di colonna 1 (non 0). Se si specifica una colonna che non esiste nello script, non viene generato un errore, ma il punto di interruzione non viene mai eseguito.
Tipo: | Int32 |
Posizione: | 2 |
Valore predefinito: | 1 |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Command
Imposta un punto di interruzione del comando. Immettere i nomi dei cmdlet, ad esempio Get-Process
, o nomi di funzione. I caratteri jolly sono consentiti.
L'esecuzione si arresta appena prima dell'esecuzione di ogni istanza di ciascun comando. Se il comando è una funzione, l'esecuzione viene arrestata ogni volta che la funzione viene chiamata e in corrispondenza di ogni sezione BEGIN, PROCESS ed END.
Tipo: | String[] |
Alias: | C |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-Line
Imposta un punto di interruzione riga in uno script. Immettere uno o più numeri di riga, separati da virgole. PowerShell si arresta immediatamente prima di eseguire l'istruzione che inizia su ognuna delle righe specificate.
Le righe vengono conteggiate dall'inizio del margine superiore sinistro del file di script a partire dal numero di riga 1 (non 0). Se si specifica una riga vuota, l'esecuzione viene arrestata prima della riga non vuota successiva. Se la riga non è compresa nell'intervallo, il punto di interruzione non viene mai raggiunto.
Tipo: | Int32[] |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Mode
Specifica la modalità di accesso che attiva i punti di interruzione delle variabili. Il valore predefinito è Write.
Questo parametro è valido solo quando il parametro Variable viene usato nel comando . La modalità si applica a tutti i punti di interruzione impostati nel comando. I valori validi per questo parametro sono:
- Write : arresta l'esecuzione immediatamente prima che venga scritto un nuovo valore nella variabile.
- Lettura : arresta l'esecuzione quando la variabile viene letta, ovvero quando si accede al relativo valore, da assegnare, visualizzare o usare. In modalità di lettura, l'esecuzione non viene arrestata quando cambia il valore della variabile.
- ReadWrite : arresta l'esecuzione quando la variabile viene letta o scritta.
Tipo: | VariableAccessMode |
Valori accettati: | Read, Write, ReadWrite |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Script
Specifica una matrice di file di script in cui questo cmdlet imposta un punto di interruzione. Immettere i percorsi e i nomi file di uno o più file di script. Se i file si trovano nella directory corrente, è possibile omettere il percorso. I caratteri jolly sono consentiti.
Per impostazione predefinita, i punti di interruzione variabile e i punti di interruzione comando vengono impostati in qualsiasi comando eseguito nella sessione corrente. Questo parametro è obbligatorio solo quando si imposta un punto di interruzione riga.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Variable
Specifica una matrice di variabili su cui questo cmdlet imposta i punti di interruzione. Immettere un elenco delimitato da virgole di variabili senza segni di dollaro ($
).
Usare il parametro Mode per determinare la modalità di accesso che attiva i punti di interruzione. La modalità predefinita, Write, arresta l'esecuzione appena prima che un nuovo valore venga scritto nella variabile.
Tipo: | String[] |
Alias: | V |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
None
Non è possibile inviare tramite pipe oggetti a questo cmdlet.
Output
Set-PSBreakpoint
restituisce un oggetto che rappresenta ogni punto di interruzione impostato.
Note
Windows PowerShell include gli alias seguenti per Set-PSBreakpoint
:
sbp
Set-PSBreakpoint
impossibile impostare un punto di interruzione in un computer remoto. Per eseguire il debug di uno script in un computer remoto, copiare lo script nel computer locale ed eseguire il debug in locale.Quando si imposta un punto di interruzione su più di una riga, un comando o una variabile,
Set-PSBreakpoint
genera un oggetto punto di interruzione per ogni voce.Quando si imposta un punto di interruzione in una funzione o variabile al prompt dei comandi, è possibile impostare il punto di interruzione prima o dopo aver creato la funzione o la variabile.