Perché viene visualizzato un messaggio di errore sulla console quando si eseguono questi due semplici campioni? Voglio che ottengo "Errore test :)" stampato sulla console invece di:PowerShell 2.0 e come gestire le eccezioni?
Get-WmiObject: Il server RPC è disponibile. (Eccezione da HRESULT: 0x800706BA) alla riga: 3 char: 15 + Get-WmiObject < < < < -ComputerName possibly.nonexisting.domain.com -Credential (Get-Credential) -Class Win32_LogicalDisk + CategoryInfo: InvalidOperation: (:) [Get-WmiObject], COMException + FullyQualifiedErrorId: GetWMICOMException, Microsoft.PowerShell.Commands.GetWmiObjectCommand
o
Tentativo di divisione per zero. Alla riga: 3 char: 13 + $ i = 1/< < < + CategoryInfo: NotSpecified: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: RuntimeException
Primo esempio:
try
{
$i = 1/0
Write-Host $i
}
catch [Exception]
{
Write-Host "Error testing :)"
}
secondo esempio:
try
{
Get-WmiObject -ComputerName possibly.nonexisting.domain.com -Credential (Get-Credential) -Class Win32_logicaldisk
}
catch [Exception]
{
Write-Host "Error testing :)"
}
Grazie mille!
Quindi se $ ErrorActionPreference è impostato su "Continua" (che è l'impostazione predefinita), viene visualizzato semplicemente il messaggio di errore e lo script continua normalmente? – Primoz
E se $ ErrorActionPreference è impostato su "Stop", l'esecuzione dello script verrà interrotta alla prima eccezione non gestita? – Primoz
Sì, esattamente.Personalmente, trovo questa opzione di default confusa e leggermente pericolosa: può portare a continuazioni inaspettate troppo spesso. Preferirei 'Stop' di default, ed è quello che faccio prima nei miei profili PS. –