powershell stack di chiamate cattura dopo viene generato un errore
-
19-09-2019 - |
Domanda
Voglio fare qualcosa di simile ...
try
{
# Something in this function throws an exception
Backup-Server ...
}catch
{
# Capture stack trace of where the error was thrown from
Log-Error $error
}
Idealmente mi piacerebbe catturare argomenti per i numeri di funzione e di linea, ecc (come si vede nel get-pscallstack)
EDIT: Per chiarire, è l'analisi dello stack PowerShell io non voglio che il .NET uno
Delle idee come raggiungere questo obiettivo?
Dave
Soluzione
L'ultimo errore è seduto in:
$error[0]
Un sacco di buone informazioni in là per voi di inseguire tra cui tracce di stack eccezione. Questo è un piccolo script handly (Resolve-ErrorRecord fornito con PSCX) che mostra un sacco di buone informazioni circa l'ultimo errore:
param(
[Parameter(Position=0, ValueFromPipeline=$true)]
[ValidateNotNull()]
[System.Management.Automation.ErrorRecord[]]
$ErrorRecord
)
process {
if (!$ErrorRecord)
{
if ($global:Error.Count -eq 0)
{
Write-Host "The `$Error collection is empty."
return
}
else
{
$ErrorRecord = @($global:Error[0])
}
}
foreach ($record in $ErrorRecord)
{
$record | Format-List * -Force
$record.InvocationInfo | Format-List *
$Exception = $record.Exception
for ($i = 0; $Exception; $i++, ($Exception = $Exception.InnerException))
{
"$i" * 80
$Exception | Format-List * -Force
}
}
}
Altri suggerimenti
Non è necessario tanto codice come la risposta di Keith.
$error[0].ErrorRecord.ScriptStackTrace
è quello che vuoi.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow