Question Gestion de logs / erreurs

Plus d'informations
il y a 7 ans 2 mois #28404 par Philippe
Réponse de Philippe sur le sujet Re:Gestion de logs / erreurs
voici une autre methode qui utilise la valeur renvoyée par le return :

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

# fonction de test
try {
$connetion = Test-Connection -computername $Servername -Count 1 -ErrorAction stop
Write-Host \"$Servername : Ping réussi !\" -ForegroundColor Green
return 0
}
catch [System.Net.NetworkInformation.PingException] {
Write-Host \"$Servername : Echec Ping = Redémarrage nécessaire !\" -ForegroundColor Red
return -1
}
}

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

if ($ok) {
\"script de connexion\"
}
else {
\"Script impossible à lancer\"
}
[/code:1]

tu peut aussi simplifier le test de ping en utilisant une option de test-connection :
[code:1]
function get-onlinetest {
Param (
# Name of computer
$Servername
)

# fonction de test
if (Test-Connection -computername $Servername -Count 1 -Quiet) {
Write-Host \"$Servername : Ping réussi !\" -ForegroundColor Green
return 0
}
else {
Write-Host \"$Servername : Echec Ping = Redémarrage nécessaire !\" -ForegroundColor Red
return -1
}
}

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

if ($ok) {
\"script de connexion\"
}
else {
\"Script impossible à lancer\"
}
[/code:1]<br><br>Message édité par: 6ratgus, à: 6/03/19 13:27

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

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


Mais je comprends pas bien ton code.
Que possède le if($ok) ?
A quoi sert la condition sur ma fonction ?

Dans le try -catch à aucun moment tu changes les valeurs de $ok c'est normal ?

[code:1]
#execution du code

$serversname = \&quot;serv1\&quot;,\&quot;serv2\&quot;,\&quot;serv3\&quot;

$ok = 1

foreach ($server in $serversname){

if (get-onlinetest $server) {

$ok = 0

}

}



if ($ok) {

\&quot;script de connexion\&quot;

}

else {

\&quot;Script impossible à lancer\&quot;

}
[/code:1]<br><br>Message édité par: dimshell, à: 6/03/19 13:51

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

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

Mais je comprends pas bien ton code.
Que possède le if($ok) ?

le if ($ok) verifi si $ok contient une valeur et si cette valeur est diferente de zero
c'est comme si j'avais ecrit : [code:1]if ($ok -ne 0 -and $ok -ne $null -and $ok -ne \&quot;\&quot;«») {[/code:1]

A quoi sert la condition sur ma fonction ?

dans la version sans try/catch j'ai changer le test-connection pour qu'il ne produise plus d'erreur en d'absence de serveur (le quiet)
elle y renvoie quelque chose c'est que le serveur est la et qu'il repond au ping
sinon si elle renvoie rien alors le serveur est injoigniable

Dans le try -catch à aucun moment tu changes les valeurs de $ok c'est normal ?

oui c'est le code suivant qui fait la modif de $ok suivant la valeur que renvoie la fonction par le return :[code:1] if (get-onlinetest $server) {
$ok = 0
}[/code:1]si la valeur est differente de zero il met zero dans $ok

c'etait pour te montrer l'utilisation du return dans une fonction car telle que tu l'utilise il ne sert a rien
.

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

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

D'accord pour le if ($ok) car comme je ne voyais pas d'arguments genre -eq -like etc cela me semblé bizarre.

ça marche niquel si je mets bien un serveur hors ligne il ne continue pas le script ;).

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

Plus d'informations
il y a 7 ans 2 mois #28434 par dimshell
Réponse de dimshell sur le sujet Re:Gestion de logs / erreurs
Je bloque actuellement sur try catch si ma connexion au serveur est réussi ou non.

# j'ai un cremential qui me connecte automatiquement
[code:1]$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\&quot;user\&quot;,$password)

try
{
$testses = New-PSSession -ComputerName serveur -Credential $creds
Invoke-Command -ScriptBlock {Get-Process}




write-host \&quot;connexion session\&quot; -ForegroundColor green
return 0
}
catch [System.Management.Automation.Remoting.PSRemotingTransportException]
{
write-host \&quot;Impossible session\&quot; -ForegroundColor red
return -1
}

finally {
#Remove-PSSession $testses


write-host \&quot;session stop\&quot; -ForegroundColor green
}
[/code:1]

Je pensais faire si un get-process fonctionne cela veut dire que je suis connecté mais y a t-il un moyen de faire plus optimisé ?

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

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

Je pensais faire si un get-process fonctionne cela veut dire que je suis connecté mais y a t-il un moyen de faire plus optimisé ?

oui tu test si $testses contient une valeur, si oui alors t'est connecté !
[code:1]if ($testses) { ....OK[/code:1]

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

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