Bonjour,

Je suis actuellement sur un projet qui consiste à tester la connectivité de postes dans une entreprise par l'envoie d'une requête ping.

Plus précisément, à partir d'un fichier POSTES.TXT qui contient l'ensemble des informations, le script doit recevoir en argument le nom d'une salle à tester et le nombre de tests à effectuer. Il génére ensuite un fichier texte horodaté contenant les informations résultantes. Sachant que si toutes les salles sont testées, le script recoit alors l'argument ALL à la place du nom de la salle. Nous pouvons utiliser les noms et salles que nous souhaitons mais la structure du fichier est ainsi faites :
(salle, liste des poste de la salle[,salle, liste des postes de la salle,...]).

(Exemples : "Script ALL 2" permet de tester toutes les salles, donc TOUS les postes, à 2 reprises, ou bien, "Script Bât01-Eta00-B01 1" permet de tester SEULEMENT les postes présent dans la salle Bât01-Eta00-B01, à 1 reprise)


Voici le fichier POSTES.TXT:

Salle Bât01-Eta00-B01
172.16.100.20
172.16.100.21
Salle Bât01-Eta01-B11
172.16.100.22
Salle Bât02-Eta00-B01
172.16.100.23
172.16.100.24
Voici ce que j'ai réalisé:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Param(
  [Parameter(Mandatory=$True)]
   [string]$testSalle,
	
   [Parameter(Mandatory=$True)]
   [int]$test
)


#Création des variables
$date = Get-Date -Format "yyyyMMdd-HHmmss"
$Salle = Get-Content -Path C:\users\louni\Desktop\POSTES.txt | Select-String -Pattern "salle" 
$nomSalle = $Salle -replace "salle",""
$nomPoste = Get-Content -Path C:\Users\louni\Desktop\POSTES.txt | Select-String -Pattern "salle" -NotMatch
$ping = ping -n "$test" $nomPoste

#Si $testSalle = ALL alors ping $nomPoste n fois sinon fait le reste


#Séparation des postes par salles
ForEach( 
    $element in get-content -path C:\users\louni\Desktop\POSTES.txt ) 
    { 
     # Si $testSalle est présent dans $element??? alors recuperes les lignes suivantes et mets le dans --> $nomPoste, 
     # ping $nomPoste dès tu croises le mot salle arrete-toi

     ping -n 1 $nomPoste | Out-File -FilePath C:\users\louni\Desktop\"$date"-"$testSalle".txt -Append
    }
Comme vous pouvez le constaté le plus complexe, c'est la séparation des postes par salles et je bloque dessus.. j'utilise la fonction foreach mais est-telle vraiment nécessaire ? je ne cherche pas forcement la réponse mais une piste de réponse serai très appréciable )

De plus, je rencontre aussi une autre erreur que je n'avais pas : la variable $nomPoste contient bien le nom de tous les postes mais lorsque j’exécute ping $nomPoste j'obtient : Paramêtre incorrect 172.16.10.20, bien sur, la commande ping 172.16.10.20 hors du script fonctionne.

Je pratique powershell depuis très peu de temps, j’apprécierai vraiment votre aide quels qu'elle en soit.

En vous remerciant,
bis