2014-06-10 17 views
6

Sto utilizzando Invoke-Expression in sessione remota e quando si genera un'eccezione, restituisce solo RemoteException senza alcuna informazione di traccia stack. Esempio:Ottenere la traccia dello stack completo dalla sessione remota

try 
{ 
    Invoke-Expression "$command 2>&1" 
}  
catch 
{ 
    Write-Host $_  
} 

Se escludo reindirizzare l'errore di uscita (2>&1) - sto ottenendo errore corretto ma chiamare console di debug indesiderati (da comando di $), che è nascosto utilizzando il reindirizzamento.

Start-Process -NoNewWindow -FilePath $CmdExe -ArgumentList $Arguments 

con START-Process vedo piena analisi dello stack, ma hanno anche console di debug indesiderati.

Come è possibile ottenere una traccia stack completa e un'eccezione corretta dall'eccezione generata in una sessione remota? Grazie.

risposta

0

Se si sta eseguendo una sessione remota, non utilizzare l'host di scrittura. Prova questo:

catch { 
    Write-Error ($_ | fl * -force | out-string) 
} 

L'altra opzione non è quella di catturare l'eccezione e l'errore di lasciare propagare di nuovo alla sessione locale. Ma sospetto che tu voglia tentare di recuperare?

+0

Grazie Keith, no non voglio recuperare, ho solo bisogno di ottenere un errore per definire la vera ragione. Nel tuo esempio vedo le informazioni complete sull'eccezione remota e nulla sulla vera eccezione (dovrebbero essere informazioni che la struttura xml è rotta) – Sergey

+0

Prova a cambiare 'fl' a' fc' (Format-Custom). Ciò seguirà gli oggetti nidificati (come Exception.InnerException) in giù come qualcosa di quattro livelli. –