Question [RESOLU] gestion des erreurs et poursuite script

Plus d'informations
il y a 12 ans 7 mois #15539 par Laurent
bonjour à tous,

je débute en powershell, soyez indulgents avec ma question :unsure:

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.

Plus d'informations
il y a 12 ans 7 mois #15542 par Philippe
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 \&quot;Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\&quot; -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.

Plus d'informations
il y a 12 ans 7 mois #15544 par Laurent
Merci :-)

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.

Plus d'informations
il y a 12 ans 7 mois #15550 par Madrolle
ça devrait marcher

[code:1]
foreach ($client in (get-content C:\temp\Clientlist1.txt)) {

try {
get-wmiobject -query \&quot;Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\&quot; -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.

Plus d'informations
il y a 12 ans 7 mois #15554 par Laurent
après beaucoup d'essais, voici mon script qui fonctionne.

[code:1]$ERREUR = \&quot; :Ne peut être joint\&quot;

foreach ($client in (get-content C:\temp\clientlist1.txt))
{
try{
try
{
get-wmiobject -query \&quot;Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\&quot; -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.

Plus d'informations
il y a 12 ans 7 mois #15556 par Laurent Dardenne
Simplifie ton code :
[code:1]
foreach ($client in (get-content C:\temp\clientlist1.txt))
{
try
{
get-wmiobject -query \&quot;Select * FROM Win32_NetworkAdapterConfiguration WHERE IpEnabled='TRUE'\&quot; -computer $client -ErrorAction Stop |
ft MacAddress,IPAddress,DNSHostName,DNSServerSearchOrder,WINSPrimaryServer -auto |
out-file c:\temp\output2.txt -append
}
catch [system.management.automation.actionpreferencesstopexception]
{
echo \&quot;Erreur pour : $client\&quot; $_ | 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
Propulsé par Kunena