Question [Résolu] Problème sonde compteur Windows

Plus d'informations
il y a 11 ans 1 mois #18943 par laurent
Bonjour,

J'ai réalisé un script pour me remonter 4 compteurs Windows et envoyer des valeurs à mon système de monitoring.
J'utilise les Job pour lancer les 4 tests en parallèles pour que le script s’exécute plus rapidement

Fonctionne très bien sur Powershell 3 ou supérieur
mais pas sur Powershell 2 (je ne peux pas le mettre a jour), j'ai du faire une boucle FOR pour avoir le même résultat que :

[code:1]$ecriture= {[math]::round(((((Get-Counter \"\Disque physique(*)\Écritures disque/s\" -SampleInterval 1 -MaxSamples 5).CounterSamples.CookedValue) | Measure-Object -Average).Average),1)}
$lecture= {[math]::round(((((Get-Counter \"\Disque physique(*)\Lectures disque/s\" -SampleInterval 1 -MaxSamples 5).CounterSamples.CookedValue) | Measure-Object -Average).Average),1)}
$ecritureO= {[math]::round((((((Get-Counter \"\Disque physique(*)\Écritures disque, octets/s\" -SampleInterval 1 -MaxSamples 5).CounterSamples.CookedValue) | Measure-Object -Average).Average)/1024),1)}
$lectureO= {[math]::round((((((Get-Counter \"\Disque physique(*)\Lectures disque, octets/s\" -SampleInterval 1 -MaxSamples 5).CounterSamples.CookedValue) | Measure-Object -Average).Average)/1024),1)}

$job1=Start-Job $ecriture
$job2=Start-Job $lecture
$job3=Start-Job $ecritureO
$job4=Start-Job $lectureO

Get-Job | Wait-Job

Receive-Job $job1 -OutVariable moyenne_ecriture
Receive-Job $job2 -OutVariable moyenne_lecture
Receive-Job $job3 -OutVariable moyenne_ecritureO
Receive-Job $job4 -OutVariable moyenne_lectureO

Write-Host \"OK | Lectures_disque/s=\"$moyenne_lecture\"R/s,Ecritures_disque/s=\"$moyenne_ecriture\"W/s,Lecture KOctets/s=\"$moyenne_lectureO\"KO/s,Ecriture KOctets/s=\"$moyenne_ecritureO\"KO/s\"[/code:1]

J'ai deux problème :
Ce code ne fonctionne pas, je récupère 5 valeurs espacé de 1 seconde et je prends la moyenne de ces valeus en arrondissant a 1 chiffre après la virgule:
[code:1]$ecriture= {[math]::round(((((Get-Counter \"\Disque physique(*)\Écritures disque/s\" -SampleInterval 1 -MaxSamples 5).CounterSamples.CookedValue) | Measure-Object -Average).Average),1)}[/code:1]

Second problème, je n'ai aucun envoi dans la variable :
[code:1]Receive-Job $job1 -OutVariable moyenne_ecriture[/code:1]

Merci d'avance si quelqu'un a une idée, je suis preneur<br><br>Message édité par: Arnaud, à: 3/03/15 17:11

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

Plus d'informations
il y a 11 ans 1 mois #18945 par Laurent Dardenne
Ce code fonctionne en V3 et &gt;, mais pas en v2:
[code:1](Get-Counter \&quot;\Disque physique(*)\Écritures disque/s\&quot; -SampleInterval 1 -MaxSamples 5).CounterSamples.CookedValue)[/code:1]
Car il y a une itération automatique en V3, en v2 il faut coder différemment ( en + étapes) .
Si tu as + versions dont la 2 le mieux est de coder avec la v2 puis de tester avec les versions supérieures.

Avec la v2 tu peux modifier ceci :
[code:1]set-strictmode -Version Latest[/code:1]
Ce qui ne posera pas de pb avec la v3 et &gt;.

Ici, teste déjà ton code en dehors d'un job.

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 1 mois #18947 par laurent
merci pour tes réponses

voici le code que j'ai fait pour la V2 pour un compteur

[code:1]$ecriture= {
$array= @()
for ($i = 0; $i -lt 5; $i++)
{
$array += ((Get-Counter \&quot;\Disque physique(1 C:«»)\Écritures disque/s\&quot;«»).CounterSamples[0].CookedValue)
}
write-host ([math]::round((($array | Measure-Object -Average).Average),1))
}

$job1=Start-Job $ecriture
Get-Job | Wait-Job

Receive-Job $job1 -OutVariable moyenne_ecriture

write-host (\&quot;Lecture Ecriture/s={0}\&quot; -f $moyenne_ecriture)

[/code:1]

c'est le job qui ne marche toujours pas
j'ai bien entendu testé le code sans le job.

Message édité par: laurentv, à: 5/02/15 16:46<br><br>Message édité par: laurentv, à: 5/02/15 16:47

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

Plus d'informations
il y a 11 ans 1 mois #18948 par laurent
[code:1]for ($i = 0; $i -lt 5; $i++)
{
$array += ((Get-Counter \&quot;\Disque physique(1 C:«»)\Écritures disque, octets/s\&quot;«»).CounterSamples[0].CookedValue)
}
write-host ([math]::round((($array | Measure-Object -Average).Average),1))[/code:1]
17916,4

j'ai bien le résultat hors JOB.

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

Plus d'informations
il y a 11 ans 1 mois #18951 par Laurent Dardenne
laurentv écrit:

c'est le job qui ne marche toujours pas

Essaie avec Write-Output.

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 1 mois #18963 par laurent
Laurent Dardenne écrit:

laurentv écrit:

c'est le job qui ne marche toujours pas

Essaie avec Write-Output.



Je te remercie tout fonctionne correctement grâce a ton commande : Write-Output

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

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