Question $error

Plus d'informations
il y a 17 ans 4 mois #3278 par steph_d
$error a été créé par steph_d
Bonjour à tous

Je voudrai utiliser cette variable très pratique mais j'aimerais pouvoir la vider au début de l'éxécution d emon script. Selon notre livre préféré cette variablest en lecture seule, mais j'espère que quelqu'un a une astuce.

Merci
Stephane

@+ Steph

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 4 mois #3281 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:$error
steph_d écrit:

mais j'espère que quelqu'un a une astuce.

Plutôt une démarche de recherche :
[code:1]
$error.gettype()
# une fois le type connu, on peut aussi consulter MSDN...
$error|gm
$error.psbase|gm
$error.Clear()
[/code:1]
:)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 4 mois #3282 par steph_d
Réponse de steph_d sur le sujet Re:$error
oh oh oh du calme là :blink:

J'arrive pas à consulter le MSDN pour powershell, je pige pas. Pour les objest .net pas de souci mais les objets en général je sais pas.

J'ai essayyé le $error |gm, mais pas $error.psbase|gm. Comment as tu eu cette idée ?

Autre chose, à l'écran lors d'une erreur on a la description mais aussi le nom du fichier le numéro de la ligne et la colonne concerné. Par contre je n'arrive qu'à récupérer la description pas le reste !!

Merci
Stephane

@+ Steph

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 4 mois #3283 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:$error
steph_d écrit:

oh oh oh du calme là

Ma démarche n'était pas de t'affoler...
steph_d écrit:

J'arrive pas à consulter le MSDN pour powershell, je pige pas. Pour les objest .net pas de souci mais les objets en général je sais pas.

Peux-tu préciser ?
steph_d écrit:

Comment as tu eu cette idée ?

En étudiant PowerShell au travers de livre, de site, de blog, de reverse, de tests...
Ce qui en travaillant donne ceci :
laurent-dardenne.developpez.com/articles...iquesSousPowerShell/
steph_d écrit:

Par contre je n'arrive qu'à récupérer la description pas le reste !!

On applique le même principe :
[code:1]
$e=$error[0]
$e
$e|gm
$e.ErrorRecord
$e.ErrorRecord|gm
$e.ErrorRecord.InvocationInfo
$e.ErrorRecord.InvocationInfo|gm
$e.ErrorRecord.InvocationInfo.ScriptLineNumber
$e.ErrorRecord.InvocationInfo.ScriptName
#etc
[/code:1]
Mais là je sous la CTP2 j'ai donc un doute si sous la v1 c'est identique.
Je viens de regarde sur MSDN , je pense que c'est bon. A vérifier

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 4 mois #3287 par steph_d
Réponse de steph_d sur le sujet Re:$error
Bonjour

En fait je sais pas trop ou trouver l'aide MSDN pour les descriptions des classes powershelll. Pour le framework 2.0 c'est bon.

Sinon pour mon problème, ben oui mais non ça marche pas, et c'est complètement tordu.

Voilà mon bout de code :
\"trap { \"Exception détectée dans le programme !\";
$mail = New-Object System.Net.Mail.MailMessage
$mail.From = 'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.'
$mail.To.Add('Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.')
$mail.Subject = 'Exception détectée dans l''extraction WMS'
$contenu = $error[0]
$contenu
$mail.Body = $contenu
$client = New-Object System.Net.Mail.SmtpClient
$client.Set_Host('SRV-MAIL')
$client.Send($mail)
break
}
\"
$contenu affiche toutes les informations qui m'intéresse sur la console:

\"Exception détectée dans le programme !
Exception lors de l'appel de « Fill » avec « 1 » argument(s) : « ERROR [42S22] [IBM][Pilote ODBC iSeries Access][DB2 UD
B]SQL0206 - La colonne ACFDPL ne se trouve pas dans les tables indiquées. »
Au niveau de S:\Informatique\Réservé\scripts\PowerShell\extraction CDF.ps1 : 35 Caractère : 24\"

par contre dans le mail je n'ai que la première partie, il me manque les infos sur le programme :
\"Au niveau de S:\Informatique\Réservé\scripts\PowerShell\extraction CDF.ps1 : 35 Caractère : 24\"

J'ai essayé en ajoutant au mail : \"$error[0].InvocationInfo.ScriptName\" mais j'ai rien de plus, pire j'ai aussi essayé
\"$error[0].InvocationInfo.ScriptName.ToString()\"
là j'ai une erreur qui me dit que
\"Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null\"

C'est bizarre non ?

Merci
Stephane

@+ Steph

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 4 mois #3288 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:$error
Salut,
steph_d écrit:

C'est bizarre non ?

La liste $error peut contenir des objets de différents types, essaie avec ceci :
[code:1]
$e=$error[0]
if ($e -is [System.Management.Automation.ErrorRecord])
{
$contenu =$e.InvocationInfo.ScriptLineNumber
$contenu +=$e.InvocationInfo.ScriptName
}
else
{ #Une exception
$contenu =$e.ErrorRecord.InvocationInfo.ScriptLineNumber
$contenu +=$e.ErrorRecord.InvocationInfo.ScriptName
}
[/code:1]
Pour les classes de PS regarde ici
msdn.microsoft.com/en-us/library/aa717491(VS.85).aspx

Message édité par: Laurent Dardenne, à: 21/11/08 10:34

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.107 secondes
Propulsé par Kunena