Question convertir Info » en type « System.int32

Plus d'informations
il y a 12 ans 4 mois #16296 par Matthew BETTON
Salut pccindo,

pccindo écrit:

Matthew, pardon j'ai trop francisé ton prenom.

Pourquoi 'trop' ? Tu l'as francisé : point ^^
Pour l'information, avec l'accent français, cela se prononce le plus souvent 'matiou' (donc pas de 'eu').
En fait, je pense maintenant avoir l'habitude, autant dans son écriture que dans sa diction : \"s'pa grave !\"

Si je comprends bien le buffersize correspond -l du batech et le NoFragmentation doit correspondre au -f. Mais à mon niveau il est plus facile de manipuler la batch que le test-connection avec tous ces paramètres.


Tu peux déjà commencer par apprendre son utilisation, ce sera un bon début ;)

Mais à méditer.


Parfois, lorsqu'on n'arrive pas à faire quelque chose avec ce que l'on connait, il faut apprendre à le faire autrement.

Aussi, l'export d'informations vers un fichier à plat, dont le formatage peut varier d'une version d'OS à l'autre et d'une culture à l'autre, pour une utilisation / exploitation à posteriori, donne le plus souvent des résultats hasardeux.

Je l'ai déjà vécu par exemple avec 'schtasks.exe' et le format csv qu'il renvoie lors de l'utilisation de '/FO CSV' : un beau bordel ! Jamais les mêmes noms de colonne, entre XP, Vista et 7 et mêmes soucis entre cultures (Fr <=> En) ...

Cela reste une solution, mais il faut toutefois en connaître les risques.

Matthew

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

Plus d'informations
il y a 12 ans 4 mois #16370 par callac
Bonjour,

Ce script de test du MTU d'un équipement fonctionne.
Dans une seconde version je vais revoir la façon du ping pour le faire en multithread !
Si c'est d'usage le Post peut être marqué comme résolu.
Je reviendrais si je me retrouve de nouveau dans une impasse.

Merci pour votre aide :side:

[code:1]# Directory pour le Ping
$root = \"D:\PingCharge\"

# Résultat Ping
$TmpPingDir = \"$root\"

# Variables contenant le directory des fichiers Log
$TmpPath = \"$root\PingResult\"
$TmpPathtxt = \"$TmpPath\PingCharge.txt\"
$TmpHorodatagetxt = \"$TmpPath\PingChargeHorodate.txt\"
$MTUtxt = \"$TmpPath\MTUtxt.txt\"

# Création du directory \"D:\PingStime\PingResult\"
if(!(test-path $TmpPingDir)) {new-item -path $root -name \"PingResult\" -type directory -ErrorAction silentlycontinue | out-null}

# Création du fichier Log \"PingCharge.txt\"
if(test-path $TmpPath) {new-item \"$TmpPathtxt\" –type file -force -ErrorAction silentlycontinue | out-null}

# Création du fichier Log \"PingChargeHorodate.txt\"
if(test-path $TmpPath) {new-item \"$TmpHorodatagetxt\" –type file -force -ErrorAction silentlycontinue | out-null}

# Création du fichier Log \"MTU.txt\"
if(test-path $TmpPath) {new-item \"$MTUtxt\" –type file -force -ErrorAction silentlycontinue | out-null}

# Création du fichier batch pour éxécuter la commande Ping
$Batch = \"$root\Pingcharge.cmd\"

# Paramètre pour le thread (A CONSTRUIRE)
$Maxthread = 50
$Minthread = 10
# Paramètres PING
$Ip = \"xxx.xxx.xxx.xxx\"
$Nbecho = 2
$PingTimeOut = 5
## Définir paramètres par défaut mais avec une possibilité de les modifier
$MaxSize = 1472
$MinSize = 1470


### Ecriture des commandes du Batch ###
# Affichage de la fenêtre DOS
\"@echo on\" | out-file $Batch -encoding ASCII
# Titre obligatoire pour identifier le batch qui tourne via les process
\"@title ThreadPing.cmd\" | out-file $Batch -append -encoding ASCII
# Le nombre de répition d'echo de la requête ICMP
\"set n=$Nbecho\" | out-file $Batch -append -encoding ASCII
# Le temps d'execution entre chaque ping
\"set w=$PingTimeOut\" | out-file $Batch -append -encoding ASCII
# Obligatoire, permet d'attendre la fin de l'exécution des commandes passées dans l'interval setlocal / endlocal
'setlocal enableDelayedExpansion' | out-file $Batch -append -encoding ASCII
# Le ping non défragmenté ayant une valeur MTU décrémenté
\"For /L %%l IN ($MaxSize, -1, $MinSize) DO ping -l %%l $Ip -n %n% -w %w% -f >> $TmpPathtxt\" | out-file $Batch -append -encoding ASCII
#'pause' | out-file $Batch -append -encoding ASCII
'@endlocal' | out-file $Batch -append -encoding ASCII


# Execution du Batch avec mesure du temps d'éxécution écrit dans PingChargeHorodate.txt
Measure-Command {$p = start-process -FilePath \"$Batch\" -Wait } | out-file -FilePath \"$TmpHorodatagetxt\"

### Si l'on trouve le caractère DF (condition) on garde la ligne précédente #####
### on ne garde que le MTU (regex), on lui ajoute les 28 octets de ICMP #####
### et on l'affiche #####
### Sinon on affiche que le MTU est de 1500 #####

$patternWait = 'attente'
# Définition de l'occurence DF (=Le paquet doit être fragmenté)
$patternDF = 'DF'
# Définition de la valeur de la Regex pour le MTU d'un nombre d'au moins 4 à 5 chiffres
$patternMTU = '\d{4,5}'
# Sauvegarde du resultat du ping dans la viariable $fichier
$fichier = get-content -Path $TmpPathtxt

# On test que le fichier trouve la correspondance avec DF (Don't Fragment)
if ($fichier -cmatch $patternDF )
{
$line = select-string -path $TmpPathtxt -pattern \"DF\" -context 1, 0
$chaine = ($line)[0].context.Precontext[0]

# On extrait la valeur MTU auquel on ajoute les 28 octets de la requête ICMP
if ($chaine -match $patternMTU)
{
[string]$match = $matches.values
[int]$result1 = $match.substring(0)
$result2 = $result1 + 28
echo \"La taille du MTU est de $result2\"
}
}
# Si l'occurence attente est rencontré, indiqué que l'adresse n'est pas joignable
elseif ($fichier -cmatch $patternWait)
{
echo \"L'adresse IP n'est pas joignable\"
}

# Si lors du ping non mention \"Le paquet doit être fragmenté, mais paramétré DF\"
# alors le MTU=1500 octets
else
{
echo \"Le MTU est de 1500 octets\"
}
[/code:1]

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

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