Question
Importer un fichier texte dans un tableau (Résolu)
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
-
- Messages : 88
- Remerciements reçus 0
je voudrais importer le contenu d'un fichier txt au format suivant:
SRV1, ServiceA, ServiceB, ServiceC
SRV2, ServiceD, ServiceB, ServiceC
SRV3, ServiceE, ServiceB, ServiceC
SRV4, ServiceF, ServiceB, ServiceC
En fait pour un serveur donné pouvoir scanner les services qui lui sont associés.
Je pense à un truc du style:
param ($file)
$array=get-content $file
foreach ( $el in $array) {
$arraytemp+=$el.split(\",\", [StringSplitOptions]::RemoveEmptyEntries)
}
Pas top, n'est pas?
Aurier vous une idée?<br><br>Message édité par: Arnaud, à: 1/08/07 18:03
Connexion ou Créer un compte pour participer à la conversation.
- Berfini
- Hors Ligne
- Membre premium
-
- Messages : 86
- Remerciements reçus 0
param ($file)
get-content $file | foreach {
$arraytemp+=$_.split(\",\", [StringSplitOptions]::RemoveEmptyEntries)
}
Gaby
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
Il existe une cmdlet qui permet d'importer un fichier délimité par des virgules, il s'agit de Import-CSV.
Le truc c'est qu'elle nécessite que ton fichier contienne une entete pour chaque champs.
Regarde déjà si cela te conviens, sinon on trouvera une autre solution.
Arnaud
MVP PowerShell et créateur de ce magnifique forum

Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ou d'un conseil ?
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
- Messages : 576
- Remerciements reçus 0
Si cela pose un problème, on peut toujours récupérer les infos avec get-content et un tout petit peu d'huile de coude:
[code:1]
$srv=@{}
get-content $file | foreach {
$server, $srv.$server = $_.split(\",\"«») | foreach {$_.trim()}
}[/code:1]
J'ai ajouté \" | foreach {$_.trim()}\" à la fin pour me débarrasser de l'espace qui apparaît en tête de chaque nom de service. Si cet espace peut ne pas figurer dans le fichier, ou s'il ne gêne pas pour le traitement à venir, tu peux virer cette partie du code.
Tu peux ensuite utiliser le tableau $srv comme suit:
[code:1]
PS> $srv
Name Value
----
SRV1 {ServiceA, ServiceB, ServiceC}
SRV3 {ServiceE, ServiceB, ServiceC}
SRV2 {ServiceD, ServiceB, ServiceC}
SRV4 {ServiceF, ServiceB, ServiceC}
PS> $srv.keys
SRV1
SRV3
SRV2
SRV4
PS> $srv.srv1
ServiceA
ServiceB
ServiceC
etc.[/code:1]
En espérant que ça te sera utile.
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Robin Lemesle
- Hors Ligne
- Modérateur
-
- Messages : 260
- Remerciements reçus 0
Un tableau associatif est un tableau dans lequel chaque valeur n’est pas référencée par un index mais par une clé. Tu pourras ainsi plus facilement retrouver les services associés à un serveur.
Rob
Robin MVP PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
-
- Messages : 88
- Remerciements reçus 0
La commandelette import-csv paraît en effet la plus adaptée. Mais elle impose, comme le signalait Arnaud, une ligne d'en-tête, et elle demande également qu'on ait une idée à priori du nombre de champs total. Chaque ligne devra contenir ce même nombre de champs (avec juste des virgules si les champs sont vides).
Si cela pose un problème, on peut toujours récupérer les infos avec get-content et un tout petit peu d'huile de coude:
[code:1]
$srv=@{}
get-content $file | foreach {
$server, $srv.$server = $_.split(\",\"«») | foreach {$_.trim()}
}[/code:1]
J'ai ajouté \" | foreach {$_.trim()}\" à la fin pour me débarrasser de l'espace qui apparaît en tête de chaque nom de service. Si cet espace peut ne pas figurer dans le fichier, ou s'il ne gêne pas pour le traitement à venir, tu peux virer cette partie du code.
Tu peux ensuite utiliser le tableau $srv comme suit:
[code:1]
PS> $srv
Name Value
----
SRV1 {ServiceA, ServiceB, ServiceC}
SRV3 {ServiceE, ServiceB, ServiceC}
SRV2 {ServiceD, ServiceB, ServiceC}
SRV4 {ServiceF, ServiceB, ServiceC}
PS> $srv.keys
SRV1
SRV3
SRV2
SRV4
PS> $srv.srv1
ServiceA
ServiceB
ServiceC
etc.[/code:1]
En espérant que ça te sera utile.
Janel
Salut,
Janel: ton exemple de code c'est pour un fichier csv ou texte?
Parce que j'ai quelque soucis!
J'ai créé mon fichier csv ainsi:
ligne1--> Server, Services
ligne2--> SRV1, SVC1, SVC2
Merci de m'éclairer!
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Importer un fichier texte dans un tableau (Résolu)