Imposta un punto di interruzione su una riga, un comando o una variabile.

Sintassi

Set-PSBreakpoint -Command <string[]> [[-Script] <string[]>] [-Azione <scriptblock>] [<CommonParameters>]

Set-PSBreakpoint [-Script] <string[]> [-Line] <Int32[]> [[-Column] <int>] [-Azione <scriptblock>] [<CommonParameters>]

Set-PSBreakpoint -Variable <string[]> [[-Script] <string[]>] [-Mode {<Read> | <Write> | <ReadWrite>}] [-Azione <scriptblock>] [<CommonParameters>]

Descrizione

Il cmdlet Set-PSBreakpoint imposta un punto d'interruzione in uno script o in qualsiasi comando in esecuzione nella sessione corrente. È possibile utilizzare Set-PSBreakpoint per impostare un punto d'interruzione prima dell'esecuzione di uno script o di un comando oppure durante il debug, se arrestato in corrispondenza di un altro punto d'interruzione.

Nota: Set-PSBreakpoint non può impostare un punto d'interruzione in un computer remoto. Per eseguire il debug di uno script in un computer remoto, copiare lo script nel computer locale, quindi eseguirne il debug a livello locale.

Ciascun comando Set-PSBreakpoint crea uno dei tre tipi di punto d'interruzione che seguono:

-- Punto di interruzione riga: imposta i punti d'interruzione su determinate coordinate di riga e colonna.

-- Punto di interruzione comando: imposta i punti d'interruzione su comandi e funzioni.

-- Punto di interruzione variabile: imposta i punti d'interruzione sulle variabili.

È possibile impostare un punto d'interruzione su più righe, comandi o variabili in un solo comando Set-PSBreakpoint, ma ciascun comando Set-PSBreakpoint imposta un solo tipo di punto d'interruzione.

In un punto d'interruzione, Windows PowerShell interrompe temporaneamente l'esecuzione e fornisce il controllo al debugger. Il prompt dei comandi viene modificato in "DBG>" e un set di comandi del debugger diventa disponibile. Tuttavia, è possibile utilizzare il parametro Action per specificare una risposta alternativa, ad esempio le condizioni per il punto d'interruzione o le istruzioni per eseguire attività aggiuntive come la registrazione o la diagnostica.

Il cmdlet Set-PSBreakpoint è uno dei diversi cmdlet progettati per il debug degli script di Windows PowerShell. Per ulteriori informazioni sul debugger di Windows PowerShell, vedere about_Debuggers.

Parametri

-Azione <scriptblock>

Specifica i comandi in esecuzione in ciascun punto d'interruzione anziché interromperli. Immettere un blocco di script che contiene i comandi. È possibile utilizzare questo parametro per impostare punti d'interruzione condizionali o eseguire altre attività come la verifica o la registrazione.

Se viene omesso questo parametro o non viene specificata alcuna azione, l'esecuzione viene arrestata al punto d'interruzione e viene avviato il debugger.

Quando viene utilizzato il parametro Action, il blocco di script di Action viene eseguito in ciascun punto d'interruzione. L'esecuzione non viene arrestata a meno che il blocco di script non includa la parola chiave Break. Se si utilizza la parola chiave Continue nel blocco di script, l'esecuzione viene ripresa fino al punto d'interruzione successivo.

Per ulteriori informazioni, vedere about_Script_Blocks, about_Break e about_Continue.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Column <int>

Specifica il numero della colonna nel file script in cui viene interrotta l'esecuzione. Immettere un solo numero di colonna. Il valore predefinito è la colonna 1.

Il valore di Column viene utilizzato con il valore del parametro Line per specificare il punto d'interruzione. Se nel parametro Line vengono specificate più righe, nel parametro Column viene impostato un punto d'interruzione sulla colonna specificata in ciascuna delle righe specificate. Windows PowerShell interrompe l'esecuzione prima dell'istruzione o dell'espressione che include il carattere nella posizione di riga e colonna specificata.

Le colonne vengono contate dal margine superiore sinistro partendo dalla colonna 1 (non 0). Se si specifica una colonna che non esiste nello script, non viene dichiarato un errore, ma il punto di interruzione non viene mai eseguito.

Obbligatorio?

false

Posizione?

3

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Command <string[]>

Imposta un punto di interruzione comando. Immettere nomi di comando, ad esempio "Get-Process" o nomi di funzione. È consentito l'utilizzo di caratteri jolly.

L'esecuzione viene interrotta prima dell'esecuzione di ogni istanza di ciascun comando. Se il comando è una funzione, l'esecuzione viene interrotta ogni volta che viene chiamata la funzione e a ogni sezione BEGIN, PROCESS ed END.

Obbligatorio?

true

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

-Line <Int32[]>

Imposta un punto di interruzione riga in uno script. Immettere uno o più numeri di riga, separati da virgole. Windows PowerShell si arresta immediatamente prima dell'esecuzione dell'istruzione che inizia su ciascuna delle righe specificate.

Le righe vengono contate dal margine superiore sinistro del file di script partendo dalla riga 1 (non 0). Se si specifica una riga vuota, l'esecuzione viene interrotta prima della riga non vuota successiva. Se la riga non è compresa nell'intervallo, il punto d'interruzione non verrà mai eseguito.

Obbligatorio?

true

Posizione?

2

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Mode <VariableAccessMode>

Determina la modalità di accesso che attiva i punti di interruzione variabile. Il valore predefinito è Write.

Questo parametro è valido solo quando il parametro Variable viene utilizzato nel comando. La modalità si applica a tutti i set di punti d'interruzione nel comando.

I valori validi sono:

-- Write: arresta immediatamente l'esecuzione prima che un nuovo valore venga scritto nella variabile.

-- Read: arresta l'esecuzione quando viene letta la variabile, ovvero quando si accede al relativo valore, da assegnare, visualizzare o utilizzare. In modalità di lettura, l'esecuzione non viene interrotta quando viene modificato il valore delle variabili.

-- ReadWrite: arresta l'esecuzione quando la variabile viene letta o scritta.

Obbligatorio?

false

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

-Script <string[]>

Imposta un punto d'interruzione in ciascun file di script specificato. Immettere i percorsi e i nomi di uno o più file di script. Se i file si trovano nella directory corrente, è possibile omettere il percorso. È consentito l'utilizzo di caratteri jolly.

Per impostazione predefinita, punti di interruzione variabile e punti di interruzione comando vengono impostati su qualsiasi comando in esecuzione nella sessione corrente. Questo parametro è obbligatorio solo durante l'impostazione di un punto di interruzione riga.

Obbligatorio?

false

Posizione?

1

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

true

-Variable <string[]>

Imposta un punto di interruzione variabile. Immettere un elenco di variabili separate da virgole senza simboli di dollaro ($).

Utilizzare i parametri Mode per determinare la modalità di accesso che attiva i punti di interruzione. La modalità predefinita Write arresta l'esecuzione immediatamente prima che un nuovo valore venga scritto nella variabile.

Obbligatorio?

true

Posizione?

named

Valore predefinito

Accettare input da pipeline?

false

Accettare caratteri jolly?

false

<CommonParameters>

Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.

Input e output

Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.

Input

Nessuno

Non è possibile reindirizzare l'input a Set-PSBreakpoint.

Output

Oggetto punto di interruzione (System.Management.Automation.LineBreakpoint, System.Management.Automation.VariableBreakpoint, System.Management.Automation.CommandBreakpoint)

Set-PSBreakpoint restituisce un oggetto che rappresenta ogni punto d'interruzione impostato.

Note

Set-PSBreakpoint non può impostare un punto d'interruzione in un computer remoto. Per eseguire il debug di uno script in un computer remoto, copiare lo script nel computer locale, quindi eseguirne il debug a livello locale.

Quando si imposta un punto d'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 d'interruzione su una funzione o una variabile al prompt dei comandi, è possibile impostare il punto d'interruzione prima o dopo la creazione della funzione o della variabile.

Esempio 1

C:\PS>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

Descrizione
-----------
Questo comando imposta un punto d'interruzione sulla riga 5 nello script Sample.ps1. Di conseguenza, durante l'esecuzione dello script, questa viene interrotta immediatamente prima dell'esecuzione della riga 5.

Quando si imposta un nuovo punto d'interruzione per numero di riga, il cmdlet Set-PSBreakpoint genera un oggetto punto di interruzione riga (System.Management.Automation.LineBreakpoint) che include l'ID del punto d'interruzione e il numero di passaggi, come illustrato nell'output di esempio seguente.






Esempio 2

C:\PS>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

Descrizione
-----------
Questo comando crea un punto di interruzione comando nella funzione Increment nel cmdlet Sample.ps1. Lo script interrompe l'esecuzione subito prima di ogni chiamata alla funzione specificata.

Il risultato sarà un oggetto punto di interruzione comando. Prima dell'esecuzione dello script, il valore della proprietà HitCount è 0.






Esempio 3

C:\PS>set-psbreakpoint -script sample.ps1 -variable Server -Mode ReadWrite

Descrizione
-----------
Questo comando imposta un punto d'interruzione sulla variabile Server nello script Sample.ps1. Utilizza il parametro Mode con un valore di ReadWrite per interrompere l'esecuzione quando il valore della variabile viene letto e subito prima che il valore venga modificato.






Esempio 4

C:\PS>set-psbreakpoint -script Sample.ps1 -command "write*"

Descrizione
-----------
Questo comando imposta un punto d'interruzione su ogni comando nello script Sample.ps1 che inizia con "write", ad esempio "write-host".






Esempio 5

C:\PS>set-psbreakpoint -script test.ps1 -command DiskTest `
  -action { (if $disk -gt 2) { break } }

Descrizione
-----------
Questo comando interrompe l'esecuzione alla funzione DiskTest nello script Test.ps1 solo quando il valore della variabile $disk è maggiore di 2.

Utilizza il cmdlet Set-PSBreakpoint per impostare un punto di interruzione comando sulla funzione DiskTest. Il valore dell'azione è un blocco di script che verifica il valore della variabile $disk nella funzione.

L'azione utilizza la parola chiave BREAK per interrompere l'esecuzione se la condizione viene soddisfatta. L'alternativa (impostazione predefinita) è CONTINUE.






Esempio 6

C:\PS>set-psbreakpoint -command checkpoint-computer

Id       : 0
Command  : checkpoint-computer
Enabled  : True
HitCount : 0
Action   :

C:\PS> function CheckLog {
>> get-eventlog -log Application | 
>> where {($_.source -like "TestApp") -and ($_.Message -like "*failed*")}
>>}
>>
C:\PS> Checklog
DEBUG: Hit breakpoint(s)
DEBUG:  Function breakpoint on 'prompt:Checklog'
C:\PS>>>

Descrizione
-----------
Questo comando imposta un punto d'interruzione sulla funzione CheckLog. Poiché il comando non specifica uno script, il punto d'interruzione viene impostato su qualsiasi attività in esecuzione nella sessione corrente. Il debugger viene interrotto quando la funzione viene chiamata, non quando viene dichiarata.






Esempio 7

C:\PS>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

Descrizione
-----------
Questo comando imposta tre punti d'interruzione riga nello script Sample.ps1. Imposta un punto d'interruzione alla colonna 2 su ciascuna riga specificata nello script. L'azione specificata nel parametro Action si applica a tutti i punti d'interruzione.






Vedere anche




Argomenti della Guida