Question
Récuperer données
- julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 13 ans 1 mois #13875
par julien
Récuperer données a été créé par julien
Bonjour à tous,
Merci à vous pour ce site que je trouve très bien fait.
J'ai des bases en java et C#
Et ici on m'a demandé de faire un petit powershell pour récuprerer des données d'un fichier .txt
Fichier source .txt =
Nom:LeNom:
Prénom:Georges:
Datedenaissance:24/07/1980:
Matri:098745:
Département:comptabilité:
Téléphone:024895647:
Email:lemail@personnel.be:
Remarque:aucune:
Je dois récuperer par ligne ce qui se trouve entre les \":\"
Et mettre chaque valeur reçu dans une variable propre.
donc pour le prénom => $prenom = Georges
etc...
D'avance merci pour votre aide, parceque je m'emmele les pinceaux...
Merci à vous pour ce site que je trouve très bien fait.
J'ai des bases en java et C#
Et ici on m'a demandé de faire un petit powershell pour récuprerer des données d'un fichier .txt
Fichier source .txt =
Nom:LeNom:
Prénom:Georges:
Datedenaissance:24/07/1980:
Matri:098745:
Département:comptabilité:
Téléphone:024895647:
Email:lemail@personnel.be:
Remarque:aucune:
Je dois récuperer par ligne ce qui se trouve entre les \":\"
Et mettre chaque valeur reçu dans une variable propre.
donc pour le prénom => $prenom = Georges
etc...
D'avance merci pour votre aide, parceque je m'emmele les pinceaux...
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 13 ans 1 mois #13876
par SiSMik
Réponse de SiSMik sur le sujet Re:Récuperer données
Bonjour,
Tu t'emmêles les pinceaux ?
Si tu nous montrais un bout de code qu'on regarde ça avec toi
@+
Tu t'emmêles les pinceaux ?
Si tu nous montrais un bout de code qu'on regarde ça avec toi
@+
Connexion ou Créer un compte pour participer à la conversation.
- julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 13 ans 1 mois #13947
par julien
Réponse de julien sur le sujet Re:Récuperer données
Désolé j'etais à l'étrangé !!
voic imon code
$info=@{}
get-content \"C:\test\FICHIER.txt\"| foreach {
$server, $info.$server = $_.split(\":\")
$nom = $info.Nom;
$prenom = $info.Prénom;
}
Je suis pas doué
voic imon code
$info=@{}
get-content \"C:\test\FICHIER.txt\"| foreach {
$server, $info.$server = $_.split(\":\")
$nom = $info.Nom;
$prenom = $info.Prénom;
}
Je suis pas doué
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 13 ans 1 mois #13950
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Récuperer données
Salut,
une solution, pour le fun
:
[code:1]
$FileName=\"C:\temp\datas.txt\"
#Le fichier définition des comptes,
# une définition regroupe 8 lignes
@\"
Nom:LeNom:
Prénom:Georges:
Datedenaissance:24/07/1980:
Matri:098745:
Département:comptabilité:
Téléphone:024895647:
Email:lemail@personnel.be:
Remarque:aucune:
Nom:«»Second:
Prénom:Jean:
Datedenaissance:07/01/1990:
Matri:008735:
Département:comptabilité:
Téléphone:024895652:
Email:«»Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.:
Remarque:aucune:
\"@ > $FileName
function ConvertTo-NoteProperty{
#Crée un membre PSNoteProperty
#On construit une définition de membre à partir d'une ligne structuré
param (
[Parameter(Mandatory=$true,ValueFromPipeline = $true)]
[string]$Line
)
process {
#Découpage du nom de membre et de sa valeur
$Params= $Line.Trim(':').Split(':')
Write-Debug \"Create property '$($Params[0])' from `\"$Line`\"\"
#Renvoi l'objet dans le pipline
New-Object System.Management.Automation.PSNoteProperty($Params[0],$Params[1])
}
}
#Nombre de propriètés à construire
$NbProperties=8
#Lit par bloc de 8 lignes
#$T est un tableau de tableau
$T=Get-Content $FileName -ReadCount $NbProperties
$Account=$T|
#Pour chaque tableau de ligne de 'définiton' de membre d'un compte
Foreach {
#Crée un objet sans proprièté
$CurrentAccount=New-Object PsObject
#Donne un pseudo type à l'objet
$CurrentAccount.PsObject.TypeNames.Insert(0,\"MyAccountType\"«»)
#On crée un membre par ligne
$_|
ConvertTo-NoteProperty|
Foreach-Object {
Write-Debug \"`tAdd property $($_.Name)\"
#Ajoute une propriété dans la liste des propriétés de l'objet personnalisé
# On manipule directement des membres de l'objet (dynamisme)
$CurrentAccount.PsObject.Properties.Add($_)
}
$CurrentAccount
}
#Tableau contenant deux objets
$Account
[/code:1]
Bonne lecture.
Message édité par: Laurent Dardenne, à: 13/02/13 10:51<br><br>Message édité par: Laurent Dardenne, à: 13/02/13 16:56
une solution, pour le fun
[code:1]
$FileName=\"C:\temp\datas.txt\"
#Le fichier définition des comptes,
# une définition regroupe 8 lignes
@\"
Nom:LeNom:
Prénom:Georges:
Datedenaissance:24/07/1980:
Matri:098745:
Département:comptabilité:
Téléphone:024895647:
Email:lemail@personnel.be:
Remarque:aucune:
Nom:«»Second:
Prénom:Jean:
Datedenaissance:07/01/1990:
Matri:008735:
Département:comptabilité:
Téléphone:024895652:
Email:«»Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.:
Remarque:aucune:
\"@ > $FileName
function ConvertTo-NoteProperty{
#Crée un membre PSNoteProperty
#On construit une définition de membre à partir d'une ligne structuré
param (
[Parameter(Mandatory=$true,ValueFromPipeline = $true)]
[string]$Line
)
process {
#Découpage du nom de membre et de sa valeur
$Params= $Line.Trim(':').Split(':')
Write-Debug \"Create property '$($Params[0])' from `\"$Line`\"\"
#Renvoi l'objet dans le pipline
New-Object System.Management.Automation.PSNoteProperty($Params[0],$Params[1])
}
}
#Nombre de propriètés à construire
$NbProperties=8
#Lit par bloc de 8 lignes
#$T est un tableau de tableau
$T=Get-Content $FileName -ReadCount $NbProperties
$Account=$T|
#Pour chaque tableau de ligne de 'définiton' de membre d'un compte
Foreach {
#Crée un objet sans proprièté
$CurrentAccount=New-Object PsObject
#Donne un pseudo type à l'objet
$CurrentAccount.PsObject.TypeNames.Insert(0,\"MyAccountType\"«»)
#On crée un membre par ligne
$_|
ConvertTo-NoteProperty|
Foreach-Object {
Write-Debug \"`tAdd property $($_.Name)\"
#Ajoute une propriété dans la liste des propriétés de l'objet personnalisé
# On manipule directement des membres de l'objet (dynamisme)
$CurrentAccount.PsObject.Properties.Add($_)
}
$CurrentAccount
}
#Tableau contenant deux objets
$Account
[/code:1]
Bonne lecture.
Message édité par: Laurent Dardenne, à: 13/02/13 10:51<br><br>Message édité par: Laurent Dardenne, à: 13/02/13 16:56
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 13 ans 1 mois #13956
par julien
Réponse de julien sur le sujet Re:Récuperer données
Laurent Dardenne merci pour ce code
je vais le lire et tester tout ça !

L'affichage est correct sur la console
cependant j'ai ce message plusisuers fois :
[code:1]ConvertTo-NoteProperty : Impossible de lier l'argument au paramètre « Line », car il s'agit d'une chaîne vide.
Au caractère \\admin.ulb.priv\data\Utilisateurs\jrassart\mes documents\powershell\Sans titre4.ps1:41 : 5
+ ConvertTo-NoteProperty|
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData : (:«»String) [ConvertTo-NoteProperty], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,ConvertTo-NoteProperty[/code:1]
Dans mon fichier source je n'ai pas de ligne vide mai splutot des zones \"non remplies\" mais je ne suis pas certains que cela vienne de là car l'affichage final est correct bien que déccallé come si c'était 2 tableaux distinct et non un seul
Nom : CAUFRIEZ
Prénom : Jules
Datedenaissance : 14/02/1975
MatriculeULB : 085214
Département : informatique
Téléphone : 0475123689
Ancienétudiant : Non
Matriculeétudiant :
NetId :
Email :
Question : Quelestvotresportfavori?
Réponseàlaquestion : football
Remarque : aucune<br><br>Message édité par: novice.ps1, à: 13/02/13 14:52
je vais le lire et tester tout ça !
L'affichage est correct sur la console
cependant j'ai ce message plusisuers fois :
[code:1]ConvertTo-NoteProperty : Impossible de lier l'argument au paramètre « Line », car il s'agit d'une chaîne vide.
Au caractère \\admin.ulb.priv\data\Utilisateurs\jrassart\mes documents\powershell\Sans titre4.ps1:41 : 5
+ ConvertTo-NoteProperty|
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData : (:«»String) [ConvertTo-NoteProperty], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,ConvertTo-NoteProperty[/code:1]
Dans mon fichier source je n'ai pas de ligne vide mai splutot des zones \"non remplies\" mais je ne suis pas certains que cela vienne de là car l'affichage final est correct bien que déccallé come si c'était 2 tableaux distinct et non un seul
Nom : CAUFRIEZ
Prénom : Jules
Datedenaissance : 14/02/1975
MatriculeULB : 085214
Département : informatique
Téléphone : 0475123689
Ancienétudiant : Non
Matriculeétudiant :
NetId :
Email :
Question : Quelestvotresportfavori?
Réponseàlaquestion : football
Remarque : aucune<br><br>Message édité par: novice.ps1, à: 13/02/13 14:52
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 13 ans 1 mois #13958
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Récuperer données
novice.ps1 écrit:
novice.ps1 écrit:
Si tu n'as pas le détail de ta structure de données, ce n'est pas la peine d'aller plus loin.
J'ai oubliè de préciser que le code est basé sur une structure supposée, dans ton cas il faut la connaitre précisément pour utiliser ce type de code. En tout cas connaitre le nombre de champs max possible et le 'token' de début, à priori c'est le champ 'Nom'.Dans mon fichier source je n'ai pas de ligne vide mais plutot des zones \"non remplies\" mais je ne suis pas certains que cela vienne de là
novice.ps1 écrit:
Si tu récupères les données avec Get-Content cela reste une ligne avec un contenu différent de ceux 'correctement' renseignés.Dans mon fichier source je n'ai pas de ligne vide mais plutot des zones \"non remplies\"
Si tu n'as pas le détail de ta structure de données, ce n'est pas la peine d'aller plus loin.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Récuperer données