Lo stato di completamento del comando precedente si può accedere tramite la variabile speciale $?
.
Si noti che questo funziona meglio con errori non terminanti (come si otterrebbe da Move-Item). Gli errori di terminazione sono il risultato di una diretta throw
o di un'eccezione generata in .NET e alterano il flusso del codice. Meglio usare una dichiarazione trap
o try/catch
per osservare questo tipo di errori.
Un'altra cosa da guardare fuori per WRT $?
e console exes è che PowerShell assume un codice di uscita pari a 0 significa successo (vale a dire $?
è impostato su $true
) e qualsiasi altra cosa significa il fallimento ($?
insieme a $false
). Sfortunatamente non tutti i console exe osservano la convenzione sul codice di uscita, ad es. potrebbero esserci più codici di successo e un singolo codice di errore (0). Per quegli ex che non seguono le regole del codice di uscita, utilizzare $LastExitCode
come indicato nei commenti per determinare il successo o l'insuccesso.
fonte
2010-09-15 21:24:27
Tante cose buone in questa risposta. Grazie –
Anche per cercare di evitare qualsiasi tipo di "gotchya!" $? memorizza solo true/false per l'ultimo comando eseguito. Questo include incarichi variabili e altre cose a cui potresti non pensare come "comandi". – EdgeVB
È anche possibile leggere da $ LASTEXITCODE per ottenere il codice di uscita effettivo restituito dalle applicazioni della console. –