Question
doublons
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 2 semaines #17118
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:doublons
Wagga écrit:
Sinon il existe cette entrée sur MSConnect
Si tu as le temps, vérifie l'encodage de ce fichier avec Notepad.(Get-content sur le fichier de sortie Telnet).
Sinon il existe cette entrée sur MSConnect
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Damien GRECOURT
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 12 ans 2 semaines #17121
par Damien GRECOURT
Réponse de Damien GRECOURT sur le sujet Re:doublons
Notepad indique ANSI.
Je n'ai pas précisé, mais c'est mon script qui réalise les connexions telnet.
A cet effet, j'ai écris une méthode pour lire le flux :
[code:1]## Lecteur de flux (connexion TCP/IP).
function read-stream{
param(
[Parameter(Position=0,Mandatory=$true)][validatenotnull()]
[System.Net.Sockets.NetworkStream]$stream
)
if($stream.CanRead){
$bufferSize = 4096
$buffer = new-object system.byte[] $bufferSize
$encoding = new-object system.text.asciiEncoding
$stringBuilder = new-object system.text.StringBuilder
## Read all the data available from the stream, writing it to the
## screen when done.
## Allow data to buffer - OPTIONNAL
#start-sleep -m 100
$output = \"\"
while($stream.DataAvailable){
#$read = $stream.Read($buffer, 0, $bufferSize)
$read = $stream.Read($buffer, 0, 1024)
$output = $stringBuilder.Append($encoding.GetString($buffer, 0, $read))
#$output = \"$output$($enc.GetString($buffer, 0, $read))\"
if($debug -eq 1){write-host -n $output}
## Allow data to buffer for a bit - OPTIONNAL
start-sleep -m 100
}
$output
}
}[/code:1]
Cette méthode encode ma sortie Telnet en ASCII.
Je n'ai pas précisé, mais c'est mon script qui réalise les connexions telnet.
A cet effet, j'ai écris une méthode pour lire le flux :
[code:1]## Lecteur de flux (connexion TCP/IP).
function read-stream{
param(
[Parameter(Position=0,Mandatory=$true)][validatenotnull()]
[System.Net.Sockets.NetworkStream]$stream
)
if($stream.CanRead){
$bufferSize = 4096
$buffer = new-object system.byte[] $bufferSize
$encoding = new-object system.text.asciiEncoding
$stringBuilder = new-object system.text.StringBuilder
## Read all the data available from the stream, writing it to the
## screen when done.
## Allow data to buffer - OPTIONNAL
#start-sleep -m 100
$output = \"\"
while($stream.DataAvailable){
#$read = $stream.Read($buffer, 0, $bufferSize)
$read = $stream.Read($buffer, 0, 1024)
$output = $stringBuilder.Append($encoding.GetString($buffer, 0, $read))
#$output = \"$output$($enc.GetString($buffer, 0, $read))\"
if($debug -eq 1){write-host -n $output}
## Allow data to buffer for a bit - OPTIONNAL
start-sleep -m 100
}
$output
}
}[/code:1]
Cette méthode encode ma sortie Telnet en ASCII.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 2 semaines #17122
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:doublons
Wagga écrit:
C'est ce que nous avons mis en place sur ce projet , bien que ce ne soit pas le même contexte, nous sommes assuré de manipuler des fichiers ayant un seul encodage.
Est-ce pour autant que ton pb vienne de là, ça je ne le sais pas.
Dans ce cas, je te conseille de construire une chaîne de production utilisant le même encodage.Notepad indique ANSI.
C'est ce que nous avons mis en place sur ce projet , bien que ce ne soit pas le même contexte, nous sommes assuré de manipuler des fichiers ayant un seul encodage.
Est-ce pour autant que ton pb vienne de là, ça je ne le sais pas.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 2 semaines #17123
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:doublons
Un oubli : le code utilisé est dispo ici :
DTW.PS.FileSystem
DTW.PS.FileSystem
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Damien GRECOURT
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 11
- Remerciements reçus 0
il y a 12 ans 2 semaines #17127
par Damien GRECOURT
Réponse de Damien GRECOURT sur le sujet Re:doublons
Bonjour Laurent,
J'ai testé l'encodage d'un de mes fichiers de sortie Telnet avec le module indiqué et le résultat est le suivant :
[code:1]PS C:\Users\xxxx> C:\Users\xxxx\Downloads\DTW.PS.FileSystem\Test-BOMFile D:\xxxx\NetWorkData\Logs\04594\Logs\107_output_telnet_05032014.txt
FileName Encoding BomFound Endian
D:\xxxx\NetWorkData\Logs\04594\Logs\107_... ASCIIEncoding False [/code:1]
En regardant à nouveau le code qui pousse les commandes Telnet sur les équipements, je vois que j'avais à nouveau forcé l'encodage du fichier en ASCII.
[code:1]$Line | out-file $DeviceOutput -encoding ASCII -append[/code:1]
Chose faite juste après avoir lu le flux et séparé les lignes pour traiter le flux ligne par ligne.
[code:1]$Reader = \"$(read-stream($str))\".Split(\"`n\"«»)[/code:1]
Donc, le flux est encodé en ASCII dès sa récupération.
Il est séparé en ligne puis redirigé vers un fichier de sortie qui est lui même encodé en ASCII.
Toute la partie Telnet est encodée en ASCII.
Ensuite, pour faire l'analyse des fichiers de sortie ils sont chargés avec Get-content
[code:1]$FileContent = get-content \"$rootLogs\$($Line.IpAddress.Split('.')[3])_output_telnet_$($FicDate).txt\"[/code:1]
On stocke les informations dans des variables puis on met tout sous forme de tableau de hashtable comme indiqué dans le premier post (les informations sont propres (trim()), reformatées si besoin).
Je vois vraiment pas ou j'ai fauté pour que Get-unique me renvoi 2 fois la même ligne. Et le pire je dirais, c'est que la ligne est en 3 exemplaires avant de filtrer avec Get-unique.
J'ai testé l'encodage d'un de mes fichiers de sortie Telnet avec le module indiqué et le résultat est le suivant :
[code:1]PS C:\Users\xxxx> C:\Users\xxxx\Downloads\DTW.PS.FileSystem\Test-BOMFile D:\xxxx\NetWorkData\Logs\04594\Logs\107_output_telnet_05032014.txt
FileName Encoding BomFound Endian
D:\xxxx\NetWorkData\Logs\04594\Logs\107_... ASCIIEncoding False [/code:1]
En regardant à nouveau le code qui pousse les commandes Telnet sur les équipements, je vois que j'avais à nouveau forcé l'encodage du fichier en ASCII.
[code:1]$Line | out-file $DeviceOutput -encoding ASCII -append[/code:1]
Chose faite juste après avoir lu le flux et séparé les lignes pour traiter le flux ligne par ligne.
[code:1]$Reader = \"$(read-stream($str))\".Split(\"`n\"«»)[/code:1]
Donc, le flux est encodé en ASCII dès sa récupération.
Il est séparé en ligne puis redirigé vers un fichier de sortie qui est lui même encodé en ASCII.
Ok, pourquoi pas, je m'y prends comment ?Dans ce cas, je te conseille de construire une chaîne de production utilisant le même encodage.
Toute la partie Telnet est encodée en ASCII.
Ensuite, pour faire l'analyse des fichiers de sortie ils sont chargés avec Get-content
[code:1]$FileContent = get-content \"$rootLogs\$($Line.IpAddress.Split('.')[3])_output_telnet_$($FicDate).txt\"[/code:1]
On stocke les informations dans des variables puis on met tout sous forme de tableau de hashtable comme indiqué dans le premier post (les informations sont propres (trim()), reformatées si besoin).
Je vois vraiment pas ou j'ai fauté pour que Get-unique me renvoi 2 fois la même ligne. Et le pire je dirais, c'est que la ligne est en 3 exemplaires avant de filtrer avec Get-unique.
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 12 ans 2 semaines #17128
par Philippe
Réponse de Philippe sur le sujet Re:doublons
salut wagga
peut être pourrais tu confirmé l'origine du problème en utilisant un éditeur du type Notepad++ qui te permet de visualisé les caractères spéciaux
ou sinon si c'est possible déposé ici temporairement les fichiers généré pour que l'on puisse les contrôlés.<br><br>Message édité par: 6ratgus, à: 6/03/14 10:30
peut être pourrais tu confirmé l'origine du problème en utilisant un éditeur du type Notepad++ qui te permet de visualisé les caractères spéciaux
ou sinon si c'est possible déposé ici temporairement les fichiers généré pour que l'on puisse les contrôlés.<br><br>Message édité par: 6ratgus, à: 6/03/14 10:30
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.054 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- doublons