Question
Gestion de logs / erreurs
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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
[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.
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
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 = \"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: dimshell, à: 6/03/19 13:51
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 = \"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: dimshell, à: 6/03/19 13:51
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 7 ans 2 mois #28408
par Philippe
c'est comme si j'avais ecrit : [code:1]if ($ok -ne 0 -and $ok -ne $null -and $ok -ne \"\"«») {[/code:1]
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
$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
.
Réponse de Philippe sur le sujet Re:Gestion de logs / erreurs
le if ($ok) verifi si $ok contient une valeur et si cette valeur est diferente de zeroMais je comprends pas bien ton code.
Que possède le if($ok) ?
c'est comme si j'avais ecrit : [code:1]if ($ok -ne 0 -and $ok -ne $null -and $ok -ne \"\"«») {[/code:1]
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)A quoi sert la condition sur ma fonction ?
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
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) {Dans le try -catch à aucun moment tu changes les valeurs de $ok c'est normal ?
$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.
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
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
.
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.
- dimshell
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 86
- Remerciements reçus 0
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 (\"user\",$password)
try
{
$testses = New-PSSession -ComputerName serveur -Credential $creds
Invoke-Command -ScriptBlock {Get-Process}
write-host \"connexion session\" -ForegroundColor green
return 0
}
catch [System.Management.Automation.Remoting.PSRemotingTransportException]
{
write-host \"Impossible session\" -ForegroundColor red
return -1
}
finally {
#Remove-PSSession $testses
write-host \"session stop\" -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é ?
# j'ai un cremential qui me connecte automatiquement
[code:1]$creds = New-Object -TypeName System.Management.Automation.PsCredential -ArgumentList (\"user\",$password)
try
{
$testses = New-PSSession -ComputerName serveur -Credential $creds
Invoke-Command -ScriptBlock {Get-Process}
write-host \"connexion session\" -ForegroundColor green
return 0
}
catch [System.Management.Automation.Remoting.PSRemotingTransportException]
{
write-host \"Impossible session\" -ForegroundColor red
return -1
}
finally {
#Remove-PSSession $testses
write-host \"session stop\" -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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 7 ans 2 mois #28436
par Philippe
[code:1]if ($testses) { ....OK[/code:1]
Réponse de Philippe sur le sujet Re:Gestion de logs / erreurs
oui tu test si $testses contient une valeur, si oui alors t'est connecté !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é ?
[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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Gestion de logs / erreurs