Question
Importer un fichier texte dans un tableau (Résolu)
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 1 mois #766
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Récupération fichier texte et tableau
Ma solution est conçue pour un fichier texte sans en-tête. Pour pouvoir l'appliquer, retire la première ligne de ton fichier et utilise mon script tel quel (sans oublier de remettre la première ligne \"param ($file)\" que j'avais supprimée de mon exemple).
Janel
Janel
Connexion ou Créer un compte pour participer à la conversation.
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 88
- Remerciements reçus 0
il y a 16 ans 1 mois #770
par bordin
Réponse de bordin sur le sujet Re:Récupération fichier texte et tableau
salut,désolé
trop bizzare! Voila le contenu du fichier messervices.txt:
SRV1, SVCA, SVCB, SVCC
SRV2, SVCA, SVCD, SVCE
SRV3, SVCA, SVCF, SVCG
J'ai copié ton code avec l'ajout de \"param ($file)\" dans get-services.ps1. Je lance: .\get-services c:\messervices.txt! En faisant $srv comme dans ton exemple: nothing à la console!!
Je ne vois pas ou est la coquille!
trop bizzare! Voila le contenu du fichier messervices.txt:
SRV1, SVCA, SVCB, SVCC
SRV2, SVCA, SVCD, SVCE
SRV3, SVCA, SVCF, SVCG
J'ai copié ton code avec l'ajout de \"param ($file)\" dans get-services.ps1. Je lance: .\get-services c:\messervices.txt! En faisant $srv comme dans ton exemple: nothing à la console!!
Je ne vois pas ou est la coquille!
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 16 ans 1 mois #771
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Récupération fichier texte et tableau
Normal 
Si tu reprends mon code tel quel dans un script, la variable $srv n'existe que dans le contexte du script. Une fois celui-ci terminé, la variable n'existe plus.
Deux solutions possibles:
1. Finir le script par l'émission de l'objet, et récupérer cet objet quand on exécute le script. Le script complet devient:
[code:1]
param ($file)
$srv=@{}
get-content $file | foreach {
$server, $srv.$server = $_.split(\",\"«») | foreach {$_.trim()}
}
$srv[/code:1]
Et son usage devient:
[code:1]
PS> $messervices = .\get-services c:\messervices.txt[/code:1]
2. Autre solution (utile si le script n'émet pas qu'un seul objet et si l'on veut récupérer plusieurs de ses variables, voir le fil avec Gaby par ailleurs), appeler le script en le \"dot-sourçant\" c'est-à-dire en l'exécutant précédé d'un point et d'un espace.
Cette 2e solution a pour résultat que toutes les variables et les fonctions créées dans le script restent en mémoire après l'exécution de ce script.
Illustration avec get-services.ps1:
[code:1]
PS> . .\get-services c:\messervices.txt
PS> $srv
...[/code:1]
Cette technique marche, mais il faut connaître le nom du tableau généré par le script, et il faut savoir que des variables utilisées par le script peuvent éventuellement entrer en conflit avec des variables créées dans la session en cours avec le même nom. On réservera donc cette solution à des cas très particuliers (inclusion d'une bibliothèque de fonctions le plus souvent).
La première solution est donc celle que je recommanderai.
Il est tard, j'espère avoir été assez clair... Je vais me coucher
Janel

Si tu reprends mon code tel quel dans un script, la variable $srv n'existe que dans le contexte du script. Une fois celui-ci terminé, la variable n'existe plus.
Deux solutions possibles:
1. Finir le script par l'émission de l'objet, et récupérer cet objet quand on exécute le script. Le script complet devient:
[code:1]
param ($file)
$srv=@{}
get-content $file | foreach {
$server, $srv.$server = $_.split(\",\"«») | foreach {$_.trim()}
}
$srv[/code:1]
Et son usage devient:
[code:1]
PS> $messervices = .\get-services c:\messervices.txt[/code:1]
2. Autre solution (utile si le script n'émet pas qu'un seul objet et si l'on veut récupérer plusieurs de ses variables, voir le fil avec Gaby par ailleurs), appeler le script en le \"dot-sourçant\" c'est-à-dire en l'exécutant précédé d'un point et d'un espace.
Cette 2e solution a pour résultat que toutes les variables et les fonctions créées dans le script restent en mémoire après l'exécution de ce script.
Illustration avec get-services.ps1:
[code:1]
PS> . .\get-services c:\messervices.txt
PS> $srv
...[/code:1]
Cette technique marche, mais il faut connaître le nom du tableau généré par le script, et il faut savoir que des variables utilisées par le script peuvent éventuellement entrer en conflit avec des variables créées dans la session en cours avec le même nom. On réservera donc cette solution à des cas très particuliers (inclusion d'une bibliothèque de fonctions le plus souvent).
La première solution est donc celle que je recommanderai.
Il est tard, j'espère avoir été assez clair... Je vais me coucher

Janel
Connexion ou Créer un compte pour participer à la conversation.
- bordin
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 88
- Remerciements reçus 0
il y a 16 ans 1 mois #781
par bordin
Réponse de bordin sur le sujet Re:Récupération fichier texte et tableau [Résolu]
Salut, grand merci Janel!
Cà marche impeccable!J'ai rajouté çà pour parcourir le contenu du tableau:
foreach ($elsrv in $array.keys)
{
foreach ( $elsvc in $array.$elsrv)
{get-wmiobject win32_service -computer $elsrv | where {$_.name -eq $elsvc} | format-table -property @{label=\"Serveur\"; expression={$elsrv}},displayname,status
Prochaine étape: envoyer les données collectées vers une feuille Excel préformatée. Pour çà je crois avoir vu un poste plus haut
But ultime: check list quotidien du réseau!!
merci, bon week end!<br><br>Message édité par: camilleB , à: 31/07/07 22:37
Cà marche impeccable!J'ai rajouté çà pour parcourir le contenu du tableau:
foreach ($elsrv in $array.keys)
{
foreach ( $elsvc in $array.$elsrv)
{get-wmiobject win32_service -computer $elsrv | where {$_.name -eq $elsvc} | format-table -property @{label=\"Serveur\"; expression={$elsrv}},displayname,status
Prochaine étape: envoyer les données collectées vers une feuille Excel préformatée. Pour çà je crois avoir vu un poste plus haut

But ultime: check list quotidien du réseau!!
merci, bon week end!<br><br>Message édité par: camilleB , à: 31/07/07 22:37
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.046 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Importer un fichier texte dans un tableau (Résolu)