Question
[Résolu] Exception lors de l'appel de «ToString»
- PAWLAK
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 8 ans 1 mois #24953
par PAWLAK
[Résolu] Exception lors de l'appel de «ToString» a été créé par PAWLAK
Bonjour à tous,
Je cherche depuis des heures comment résoudre mon problème.
J'ai récupéré un code pour créer des signatures mails en GPO. Les informations sont récupérées via l'AD.
Je souhaiterais afficher le numéro de téléphone tout simplement et en cas ou il n'y en a pas, ne pas l'afficher.
Si jamais le numéro de téléphone est indiqué, cela fonctionne. Hors si il n'y a rien, j'ai un message d'erreur lors de l’exécution du code sous powershell.
Voici mon code
[code:1]
If($ADTelePhoneNumber -ne $null){
$FindText = \"TelephoneNumber\"
$ReplaceText = 'Ligne Directe : '+ $ADTelePhoneNumber.ToString()
$MSWord.Selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format, $ReplaceText, $ReplaceAll)
}
Else{$FindText = \"TelephoneNumber\"
$ReplaceText = \"\"
}
[/code:1]
Et voici l'erreur sous powershell:
[code:1]
Exception lors de l'appel de «ToString» avec «0» argument(s): «L'exception suivante s'est produite lors de la récupération de la représentation sous forme de
chaîne de la méthode «TelephoneMobile»: «La référence d'objet n'est pas définie à une instance d'un objet.»»
Au caractère Y:\TEST\Set-OutlookSignature.ps1:118 : 4
+ if($ADTelephoneMobile.ToString() -ne $null){
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : ExtendedTypeSystemException
[/code:1]
Merci pour votre aide !
Eric<br><br>Message édité par: rico76, à: 15/02/18 11:42
Je cherche depuis des heures comment résoudre mon problème.
J'ai récupéré un code pour créer des signatures mails en GPO. Les informations sont récupérées via l'AD.
Je souhaiterais afficher le numéro de téléphone tout simplement et en cas ou il n'y en a pas, ne pas l'afficher.
Si jamais le numéro de téléphone est indiqué, cela fonctionne. Hors si il n'y a rien, j'ai un message d'erreur lors de l’exécution du code sous powershell.
Voici mon code
[code:1]
If($ADTelePhoneNumber -ne $null){
$FindText = \"TelephoneNumber\"
$ReplaceText = 'Ligne Directe : '+ $ADTelePhoneNumber.ToString()
$MSWord.Selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format, $ReplaceText, $ReplaceAll)
}
Else{$FindText = \"TelephoneNumber\"
$ReplaceText = \"\"
}
[/code:1]
Et voici l'erreur sous powershell:
[code:1]
Exception lors de l'appel de «ToString» avec «0» argument(s): «L'exception suivante s'est produite lors de la récupération de la représentation sous forme de
chaîne de la méthode «TelephoneMobile»: «La référence d'objet n'est pas définie à une instance d'un objet.»»
Au caractère Y:\TEST\Set-OutlookSignature.ps1:118 : 4
+ if($ADTelephoneMobile.ToString() -ne $null){
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : ExtendedTypeSystemException
[/code:1]
Merci pour votre aide !
Eric<br><br>Message édité par: rico76, à: 15/02/18 11:42
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 1 mois #24958
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Exception lors de l'appel de «ToString» avec «0» a
Salut,
il est recommandé d'écrire un test portant sur la valeur $null comme ceci :
[code:1]
If($null -eq $ADTelePhoneNumber){
[/code:1]
Pour
[code:1]
$ReplaceText = 'Ligne Directe : '+ $ADTelePhoneNumber.ToString()
[/code:1]
L'usage de ToString est redondant, car ici le premier opérande est une string, l'opérateur '+' implique donc une conversion implicite de l'objet en string par PS.
De plus on ne peut appeler une méthode sur une variable contenant $null.
Ici ne pas utiliser ToString() réglera un problème.
Reste celui du message d'erreur qui semble référencer une méthode ETS (Add-member ou fichier .ps1xml).
Mais là ce n'est que supposition
il est recommandé d'écrire un test portant sur la valeur $null comme ceci :
[code:1]
If($null -eq $ADTelePhoneNumber){
[/code:1]
Pour
[code:1]
$ReplaceText = 'Ligne Directe : '+ $ADTelePhoneNumber.ToString()
[/code:1]
L'usage de ToString est redondant, car ici le premier opérande est une string, l'opérateur '+' implique donc une conversion implicite de l'objet en string par PS.
De plus on ne peut appeler une méthode sur une variable contenant $null.
Ici ne pas utiliser ToString() réglera un problème.
Reste celui du message d'erreur qui semble référencer une méthode ETS (Add-member ou fichier .ps1xml).
Mais là ce n'est que supposition
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- PAWLAK
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 8 ans 1 mois #24961
par PAWLAK
Réponse de PAWLAK sur le sujet Re:Exception lors de l'appel de «ToString» avec «0» a
Bonjour Laurent,
Il faut que je remplace ce code ci
[code:1]$ReplaceText = 'Ligne Directe : '+ $ADTelePhoneNumber.ToString()[/code:1]
par
[code:1]If($null -eq $ADTelePhoneNumber){ [/code:1]
C'est bien cela ?
Ce qui donnerais
[code:1]If($null -eq $ADTelePhoneNumber){
$FindText = \"TelephoneNumber\"
$MSWord.Selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format, $ReplaceText, $ReplaceAll)
}
[/code:1]<br><br>Message édité par: rico76, à: 9/02/18 15:40
Il faut que je remplace ce code ci
[code:1]$ReplaceText = 'Ligne Directe : '+ $ADTelePhoneNumber.ToString()[/code:1]
par
[code:1]If($null -eq $ADTelePhoneNumber){ [/code:1]
C'est bien cela ?
Ce qui donnerais
[code:1]If($null -eq $ADTelePhoneNumber){
$FindText = \"TelephoneNumber\"
$MSWord.Selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format, $ReplaceText, $ReplaceAll)
}
[/code:1]<br><br>Message édité par: rico76, à: 9/02/18 15:40
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 1 mois #24962
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Exception lors de l'appel de «ToString» avec «0» a
rico76 écrit:
[code:1]
f($null -eq $ADTelePhoneNumber){
$FindText = \"TelephoneNumber\"
$ReplaceText = 'Ligne Directe : '+ $ADTelePhoneNumber
$MSWord.Selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format, $ReplaceText, $ReplaceAll)
}
Else{$FindText = \"TelephoneNumber\"
$ReplaceText = \"\"
}
[/code:1]
Dis nous ce que cela donne à l'exécution
Non, on inverse le test et on supprime l'appel à ToString() :C'est bien cela ?
[code:1]
f($null -eq $ADTelePhoneNumber){
$FindText = \"TelephoneNumber\"
$ReplaceText = 'Ligne Directe : '+ $ADTelePhoneNumber
$MSWord.Selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format, $ReplaceText, $ReplaceAll)
}
Else{$FindText = \"TelephoneNumber\"
$ReplaceText = \"\"
}
[/code:1]
Dis nous ce que cela donne à l'exécution
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- PAWLAK
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 8 ans 1 mois #24965
par PAWLAK
Réponse de PAWLAK sur le sujet Re:Exception lors de l'appel de «ToString» avec «0» a
Bonjour Laurent,
J'ai l'erreur suivante lorsque j'utilise le code que tu as donné :
[code:1]Impossible de convertir la valeur en type System.String.
Au caractère Y:\TEST\Set-OutlookSignature.ps1:138 : 5
+ $ReplaceText = 'Mobile : '+ $ADTelephoneMobile[/code:1]
je te remercie
J'ai l'erreur suivante lorsque j'utilise le code que tu as donné :
[code:1]Impossible de convertir la valeur en type System.String.
Au caractère Y:\TEST\Set-OutlookSignature.ps1:138 : 5
+ $ReplaceText = 'Mobile : '+ $ADTelephoneMobile[/code:1]
je te remercie
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 8 ans 1 mois #24966
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Exception lors de l'appel de «ToString» avec «0» a
Bonjour,
rico76 écrit:
Là il faut creuser, peux-tu nous communiquer les infos renvoyées par :
[code:1]
$PSversionTable
$ADTelephoneMobile.Gettype().FullName
$ADTelephoneMobile.|Get-member
$ADTelephoneMobile.ToString
$Error[0]|Select *
[/code:1]
Pour la dernière ligne ce sera pertinent si toutefois ton code ne déclenche pas d'autres erreurs.
En même temps j'ai un doute sur les extraits de code que tu donnes, l'un se déclenche en ligne 118,l'autre en 138. De plus il ne s'agit pas, à priori, de la même variable.
La version d'origine devrait déclencher cette dernière erreur.
rico76 écrit:
C'est bien embarrassantJ'ai l'erreur suivante lorsque j'utilise le code que tu as donné :
Là il faut creuser, peux-tu nous communiquer les infos renvoyées par :
[code:1]
$PSversionTable
$ADTelephoneMobile.Gettype().FullName
$ADTelephoneMobile.|Get-member
$ADTelephoneMobile.ToString
$Error[0]|Select *
[/code:1]
Pour la dernière ligne ce sera pertinent si toutefois ton code ne déclenche pas d'autres erreurs.
En même temps j'ai un doute sur les extraits de code que tu donnes, l'un se déclenche en ligne 118,l'autre en 138. De plus il ne s'agit pas, à priori, de la même variable.
La version d'origine devrait déclencher cette dernière erreur.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.048 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Exception lors de l'appel de «ToString»