Question
[RESOLU] gestion des erreurs et poursuite script
- Laurent
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 12 ans 7 mois #15539
par Laurent
[RESOLU] gestion des erreurs et poursuite script a été créé par Laurent
bonjour à tous,
je débute en powershell, soyez indulgents avec ma question
Je souhaite gérer les erreurs d'une commande que je lance.
Ma commande est:
[code:1]
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computer (get-content C:\temp\Clientlist1.txt) | ft MacAddress,IPAddress,DNSHostName,DNSServerSearchOrder,WINSPrimaryServer -auto[/code:1]
Elle me permet de récupérer toutes sortes d'infos réseau pour les machines contenues dans le fichier Clientlist1.txt
Mais si le script tombe sur une machine qu'il ne peut pas joindre, il s'arrête sur l'erreur et ne va pas plus loin.
Qqn peut-il me dire ou m'expliquer comment faire pour générer proprement une erreur pour la ligne qui pose problème, mais surtout que l'exécution se poursuive jusqu'à la fin du fichier?
Merci pour votre aide...
Laurent
Message édité par: Lauviel, à: 8/08/13 15:48<br><br>Message édité par: Lauviel, à: 9/08/13 09:13
je débute en powershell, soyez indulgents avec ma question
Je souhaite gérer les erreurs d'une commande que je lance.
Ma commande est:
[code:1]
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computer (get-content C:\temp\Clientlist1.txt) | ft MacAddress,IPAddress,DNSHostName,DNSServerSearchOrder,WINSPrimaryServer -auto[/code:1]
Elle me permet de récupérer toutes sortes d'infos réseau pour les machines contenues dans le fichier Clientlist1.txt
Mais si le script tombe sur une machine qu'il ne peut pas joindre, il s'arrête sur l'erreur et ne va pas plus loin.
Qqn peut-il me dire ou m'expliquer comment faire pour générer proprement une erreur pour la ligne qui pose problème, mais surtout que l'exécution se poursuive jusqu'à la fin du fichier?
Merci pour votre aide...
Laurent
Message édité par: Lauviel, à: 8/08/13 15:48<br><br>Message édité par: Lauviel, à: 9/08/13 09:13
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 12 ans 7 mois #15542
par Philippe
Réponse de Philippe sur le sujet Re:gestion des erreurs et poursuite script
salut Lauviel
try catch est une solution
mais il te faut modifier ton code pour l'adapter a cette gestion d'erreur et pour qu'il puisse poursuivre sont travail...
ex :
[code:1]
get-content C:\temp\Clientlist1.txt | foreach {
try
{
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computer $_ | ft MacAddress,IPAddress,DNSHostName,DNSServerSearchOrder,WINSPrimaryServer -auto
}
catch
{
# ici tu gere l'erreur
}
}[/code:1]
Mais en programmation et donc avec powershell, il y a souvent plusieurs techniques disponibles pour effectuer une meme action, c'est ce qui permet de s'adapter au mieu a chaque situation.
bon scriptage
try catch est une solution
mais il te faut modifier ton code pour l'adapter a cette gestion d'erreur et pour qu'il puisse poursuivre sont travail...
ex :
[code:1]
get-content C:\temp\Clientlist1.txt | foreach {
try
{
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computer $_ | ft MacAddress,IPAddress,DNSHostName,DNSServerSearchOrder,WINSPrimaryServer -auto
}
catch
{
# ici tu gere l'erreur
}
}[/code:1]
Mais en programmation et donc avec powershell, il y a souvent plusieurs techniques disponibles pour effectuer une meme action, c'est ce qui permet de s'adapter au mieu a chaque situation.
bon scriptage
Connexion ou Créer un compte pour participer à la conversation.
- Laurent
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 12 ans 7 mois #15544
par Laurent
Réponse de Laurent sur le sujet Re:gestion des erreurs et poursuite script
Merci 
Encore une question: comment fait-on pour faire sortir l'output dans un fichier?
Merci,
L.
Encore une question: comment fait-on pour faire sortir l'output dans un fichier?
Merci,
L.
Connexion ou Créer un compte pour participer à la conversation.
- Madrolle
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 47
- Remerciements reçus 0
il y a 12 ans 7 mois #15550
par Madrolle
ShellDealer sur Twitter
Réponse de Madrolle sur le sujet Re:gestion des erreurs et poursuite script
ça devrait marcher
[code:1]
foreach ($client in (get-content C:\temp\Clientlist1.txt)) {
try {
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computername $client | %{
$_.IPAddress+';'+$_.DNSHostName | out-file -path $fichier -append
} catch {
# ici tu gères l'erreur
}
}
[/code:1]
[code:1]
foreach ($client in (get-content C:\temp\Clientlist1.txt)) {
try {
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computername $client | %{
$_.IPAddress+';'+$_.DNSHostName | out-file -path $fichier -append
} catch {
# ici tu gères l'erreur
}
}
[/code:1]
ShellDealer sur Twitter
Connexion ou Créer un compte pour participer à la conversation.
- Laurent
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 4
- Remerciements reçus 0
il y a 12 ans 7 mois #15554
par Laurent
Réponse de Laurent sur le sujet [RESOLU] gestion des erreurs et poursuite script
après beaucoup d'essais, voici mon script qui fonctionne.
[code:1]$ERREUR = \" :Ne peut être joint\"
foreach ($client in (get-content C:\temp\clientlist1.txt))
{
try{
try
{
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computer $client -ErrorAction Stop | ft MacAddress,IPAddress,DNSHostName,DNSServerSearchOrder,WINSPrimaryServer -auto | out-file c:\temp\output2.txt -append
}
catch [system.management.automation.actionpreferencesstopexception]
{
Throw $_.exception
}
}
catch
{
echo $client $ERREUR | out-file c:\temp\output2.txt -append
}
}[/code:1]
Merci pour votre aide...
[code:1]$ERREUR = \" :Ne peut être joint\"
foreach ($client in (get-content C:\temp\clientlist1.txt))
{
try{
try
{
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computer $client -ErrorAction Stop | ft MacAddress,IPAddress,DNSHostName,DNSServerSearchOrder,WINSPrimaryServer -auto | out-file c:\temp\output2.txt -append
}
catch [system.management.automation.actionpreferencesstopexception]
{
Throw $_.exception
}
}
catch
{
echo $client $ERREUR | out-file c:\temp\output2.txt -append
}
}[/code:1]
Merci pour votre aide...
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 12 ans 7 mois #15556
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:[RESOLU] gestion des erreurs et poursuite script
Simplifie ton code :
[code:1]
foreach ($client in (get-content C:\temp\clientlist1.txt))
{
try
{
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computer $client -ErrorAction Stop |
ft MacAddress,IPAddress,DNSHostName,DNSServerSearchOrder,WINSPrimaryServer -auto |
out-file c:\temp\output2.txt -append
}
catch [system.management.automation.actionpreferencesstopexception]
{
echo \"Erreur pour : $client\" $_ | out-file c:\temp\output2.txt -append
}
}
[/code:1]
Ici, cela ne sert à rien de déclencher une exception pour la traiter tout de suite après.
[code:1]
foreach ($client in (get-content C:\temp\clientlist1.txt))
{
try
{
get-wmiobject -query \"Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\" -computer $client -ErrorAction Stop |
ft MacAddress,IPAddress,DNSHostName,DNSServerSearchOrder,WINSPrimaryServer -auto |
out-file c:\temp\output2.txt -append
}
catch [system.management.automation.actionpreferencesstopexception]
{
echo \"Erreur pour : $client\" $_ | out-file c:\temp\output2.txt -append
}
}
[/code:1]
Ici, cela ne sert à rien de déclencher une exception pour la traiter tout de suite après.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.046 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [RESOLU] gestion des erreurs et poursuite script