Question Gestion de logs / erreurs

Plus d'informations
il y a 7 ans 2 mois #28394 par dimshell
Gestion de logs / erreurs a été créé par dimshell
Bonjour,

Je réalises un test de ping sur mes serveurs.

[code:1]function get-onlinetest
{
Param
(
# Name of computer
$Servername
)

# fonction de test
try
{
$connetion = Test-Connection -computername $Servername -Count 1 -ErrorAction stop

}
catch [System.Net.NetworkInformation.PingException]
{


return Write-Host \"$Servername : Echec Ping = Redémarrage nécessaire !\" -ForegroundColor Red


}

Write-Host \"$Servername : Ping réussi !\" -ForegroundColor Green

}

#execution du code
$serversname = \"serv1\",\"serv2\",\"serv3\"
foreach ($server in $serversname){get-onlinetest $server}
[/code:1]

résultat correct :
serv1 : Echec Ping = Redémarrage nécessaire !
serv2 : Ping Réussi
serv3 : Ping Réussi



J'aimerais que mon script s’exécute si seulement tout les serveurs sont Ping Réussi.
Car si je le lances avec un serveur offline mon script reste bloqué tant que le serveur se reconnecte.
[code:1]
#### Serveur1 ######
$content = \"$($env:USERPROFILE)\Documents\Cred.txt\"
$destinationfile = \"$($env:USERPROFILE)\Documents\test\"
$password = Get-Content $content | ConvertTo-SecureString -Key $key

$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\"user\", $password)

$idsession= New-PSSession -ComputerName ARRFSRAD -Credential $creds

#Invoke-Command -Session $idsession -ScriptBlock {powershell C:\Users\user\Desktop\ScriptWinDump.ps1}


Copy-Item -Path C:\Users\user\Documents\WindumpFSrad.csv -FromSession $idsession -Destination $destinationfile

Remove-PSSession $idsession

#### Serveur2 ######

$password = Get-Content $content | ConvertTo-SecureString -Key $key

$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\"user\", $password)

$idsession= New-PSSession -ComputerName l2arrnetcare -Credential $creds


Copy-Item -Path C:\Users\user\Documents\WindumpNetcare.csv -FromSession $idsession -Destination $destinationfile

Remove-PSSession $idsession
[/code:1]

Je voulais initialiser une variable avant le return.
Si vous avez une autre approche je suis preneur.

####Code d'exemple
[code:1]
function get-onlinetest
{
Param
(
# Name of computer
$Servername
)

# fonction de test
try
{
$connetion = Test-Connection -computername $Servername -Count 1 -ErrorAction stop

}
catch [System.Net.NetworkInformation.PingException]
{

$i=1
return Write-Host \"$Servername : Echec Ping = Redémarrage nécessaire !\" -ForegroundColor Red


}

Write-Host \"$Servername : Ping réussi !\" -ForegroundColor Green

}

#execution du code
$serversname = \"serv1\",\"serv2\",\"serv3\"
foreach ($server in $serversname){get-onlinetest $server}

if ($i -eq 1)

{Script impossible à lancer

else {

script de connexion
}
}
[/code:1]

Merci pour vos réponses.

Message édité par: dimshell, à: 5/03/19 09:56<br><br>Message édité par: dimshell, à: 5/03/19 10:30

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

Plus d'informations
il y a 7 ans 2 mois #28395 par Philippe
Réponse de Philippe sur le sujet Re:Gestion de logs / erreurs
salut dimshell

j'avais la même idée que toi
par contre le nomage de la variable seari plus dans le ok que le i

mais plus important initialise ta variable à zero avant ta boucle foreach sur get-onlinetest sinon ça risque de ne pas marcher !! :blink: une histoire de porté de variable

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

Plus d'informations
il y a 7 ans 2 mois #28397 par dimshell
Réponse de dimshell sur le sujet Re:Gestion de logs / erreurs
Merci pour ta réponse.

Je n'ai pas compris ta phrase :

\&quot;par contre le nomage de la variable seari plus dans le ok que le i\&quot;

[code:1]
function get-onlinetest
{
Param
(
# Name of computer
$Servername
)

# fonction de test
try
{
$connetion = Test-Connection -computername $Servername -Count 1 -ErrorAction Stop


}
catch [System.Net.NetworkInformation.PingException]
{

$ok=1
return Write-Host \&quot;$Servername : Echec Ping = Redémarrage nécessaire !\&quot; -ForegroundColor Red



}

Write-Host \&quot;$Servername : Ping réussi !\&quot; -ForegroundColor Green

}

#execution du code
$serversname = \&quot;server1\&quot;,\&quot;server2\&quot;
$ok=0
foreach ($server in $serversname){get-onlinetest $server}

[/code:1]

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

Plus d'informations
il y a 7 ans 2 mois #28399 par Philippe
Réponse de Philippe sur le sujet Re:Gestion de logs / erreurs

Je n'ai pas compris ta phrase :

\&quot;par contre le nomage de la variable seari plus dans le ok que le i\&quot;

normal il faut que je change de doigts, les miens tapent n'importe quoi !!!
je voulais dire que j'aurai nommé la variable \&quot;i\&quot; en \&quot;ok\&quot; par exemple
i est généralement utilisé dans des boucles ou comme compteur

mais je vois que tu la fais dans ton code !

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

Plus d'informations
il y a 7 ans 2 mois #28400 par Philippe
Réponse de Philippe sur le sujet Re:Gestion de logs / erreurs
pour info
bien que cette ligne ne provoque pas d'erreur, elle n'en est pas bon pour autant :
[code:1] return Write-Host \&quot;$Servername : Echec Ping = Redémarrage nécessaire !\&quot; -ForegroundColor Red
[/code:1]return renvoie le parametre qui est transmis à droite de l'instruction,
hors write-host ne renvoie aucune valeur !
il est plus logique de faire ceci :
[code:1] Write-Host \&quot;$Servername : Echec Ping = Redémarrage nécessaire !\&quot; -ForegroundColor Red
return
[/code:1]
ou ça :
[code:1] Write-Host \&quot;$Servername : Echec Ping = Redémarrage nécessaire !\&quot; -ForegroundColor Red
return -1 # généralement on met des valeur negative pour indiquer une erreur
[/code:1]

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

Plus d'informations
il y a 7 ans 2 mois #28401 par dimshell
Réponse de dimshell sur le sujet Re:Gestion de logs / erreurs
Merci pour ta réponse.

Mais si tu mets -1 cela s'affiche dans la console.
Mais ce n'est pas bloquant pour autant mon script ping quand même les autres serveurs.

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

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