Question Importer un fichier texte dans un tableau (Résolu)

Plus d'informations
il y a 14 ans 5 mois #766 par Jacques Barathon
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

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

Plus d'informations
il y a 14 ans 5 mois #770 par bordin
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!

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

Plus d'informations
il y a 14 ans 5 mois #771 par Jacques Barathon
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

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

Plus d'informations
il y a 14 ans 5 mois #781 par bordin
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 :lol:
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.057 secondes
Propulsé par Kunena