Question
Script et Variable (Résolu)
- sonic
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 14 ans 9 mois #3406
par sonic
Réponse de sonic sur le sujet Re:Script et Variable
Je sais pas pourquoi ma reponse apparait plusieurs foi et en vrac !!!
Bon vola ce que j'arrive à faire fonctionner :
[code:1]
$Tableau = Get-Content –path config.dat
Write-Output $Tableau[« rep1 »] ->> ca fonctionne toujours pas ca
$a=$Tableau[\"0\"].Split(\"=\"«»)[1]
$b=$Tableau[\"1\"].Split(\"=\"«»)[1]
$c=$Tableau[\"2\"].Split(\"=\"«»)[1]
$a
$b
$c
[/code:1]
En fait au lieu d'appeler les données du tableau par leur nom, je les appelles par le numero de leur ligne , c'est peut etre pa forcénement mieu mais autrement ca fonctione pas . Une idée ?
Bon vola ce que j'arrive à faire fonctionner :
[code:1]
$Tableau = Get-Content –path config.dat
Write-Output $Tableau[« rep1 »] ->> ca fonctionne toujours pas ca
$a=$Tableau[\"0\"].Split(\"=\"«»)[1]
$b=$Tableau[\"1\"].Split(\"=\"«»)[1]
$c=$Tableau[\"2\"].Split(\"=\"«»)[1]
$a
$b
$c
[/code:1]
En fait au lieu d'appeler les données du tableau par leur nom, je les appelles par le numero de leur ligne , c'est peut etre pa forcénement mieu mais autrement ca fonctione pas . Une idée ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6290
- Remerciements reçus 67
il y a 14 ans 9 mois #3407
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Script et Variable
sonic31 écrit:
sonic31 écrit:
sonic31 écrit:
<br><br>Message édité par: Laurent Dardenne, à: 9/12/08 15:02
Si tu postes un message alors que ta session à expiré le forum te demande si tu veux le reposter dans ce cas répondre nonn car le post est bien pris en compteJe sais pas pourquoi ma reponse apparait plusieurs foi
sonic31 écrit:
De plus certaines lignes mettent Joomla à rudes épreuveet en vrac !!!

sonic31 écrit:
Peux-tu communiquer le contenu du fichier .dat, là j'ai un peu de mal à comprendreUne idée ?

Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- sonic
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 14 ans 9 mois #3417
par sonic
Réponse de sonic sur le sujet Re:Script et Variable
Bonjour,
Voici le contenu de mon config.dat
$rep1=repertoire1
$fic1=fichier1
$var1=variable1
Ce n'est qu'un test .
Je pensai que avec :
[code:1]Write-Output $Tableau[« $rep1 »][/code:1]
J'aurai :\"repertoire1\"
et par exemple :
[code:1]Write-Output $Tableau[« $fic1»][/code:1]
J'aurai :\"fichier1\"
A la place j'ai ou un message d'erreur (suivatn le syntaxe)ou la ligne complette, par exemple :$rep1=repertoire1 mais meme pas en rapport de ce que je demande
Voici le contenu de mon config.dat
$rep1=repertoire1
$fic1=fichier1
$var1=variable1
Ce n'est qu'un test .
Je pensai que avec :
[code:1]Write-Output $Tableau[« $rep1 »][/code:1]
J'aurai :\"repertoire1\"
et par exemple :
[code:1]Write-Output $Tableau[« $fic1»][/code:1]
J'aurai :\"fichier1\"
A la place j'ai ou un message d'erreur (suivatn le syntaxe)ou la ligne complette, par exemple :$rep1=repertoire1 mais meme pas en rapport de ce que je demande

Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6290
- Remerciements reçus 67
il y a 14 ans 9 mois #3418
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Script et Variable
A première vue ce qui se rappoche le plus du comportement, que tu recherches à partir d'un fichier, correspond à la structure d'un fichier ini (clé=valeur).
L'approche suivante :
[code:1]
Write-Output $Tableau[\"$rep1\"]
[/code:1]
peut se faire, par exemple, au travers d'un hastable (clé=valeur) mais pas par un get-content qui récupère un tableaux de ligne, comme tu l'as constaté.
Ensuite sous Powershell il existe le dynamisme
[code:1]
$rep1=$null
$T=get-content config.dat
invoke-expression $T[0]
$rep1
[/code:1]
On peut ajouter du code pour rechercher dans ce tableau un élément par son nom :
[code:1]
$name=\"rep1\"
$T| Where {$_ -match \"^.$name=\"}| invoke-expression
[/code:1]
Un peu laborieux...
Sinon PowerShell propose, autour des cmdlets Export-Clixml et Import-Clixml, un mécanisme de
sérialisation des données basé sur XML. Par exemple les objets suivant :
[code:1]
$n=$null
[char] $c='a'
$p=10
$r=[ref] $p
$ti=@(5,1,485)
$ts=@(\"Un\",\"Deux\",\"Trois\"«»)
$Ht=@{1=\"Un\";2=\"Deux\";3=\"Trois\"}
[/code:1]
peuvent être sérialisés à l’aide de Export-Clixml :
[code:1]
$r,$p,10,$n,$ti,$ts,\"Test\",$False,$c,'a',-1.52|Export-clixml (join-path $pwd Test.xml)
[/code:1]
La désérialisation se faisant à l’aide de Import-Clixml, ici autour d'une affectation multiple :
[code:1]
$r,$p,$entier,$n,$ti,$ts,$String,$bool,$c,$char,$double=Import-clixml(join-path $pwd Test.xml)
[/code:1]
Cela correspond parfaitement à ce que tu veux faire, attention aux objets évolués( ex: get-process) qui eux ne seront pas recrées à l'identique.
[code:1]
$MaConfig=@{Rep1=\"Un\";Fichier1=\"Deux\";Var1=\"Trois\"}
$MaConfig|export-clixml (join-path $pwd Config.xml)
New-Variable Rep1 $MaConfig.Rep1
#ou
$rep1=\"repertoire1\"
$fic1=\"fichier1\"
$var1=\"variable1\"
$rep1,$fic1,$var1|export-clixml (join-path $pwd Config.xml)
$rep1,$fic1,$var1=Import-clixml(join-path $pwd Config.xml)
[/code]
Ou simplement faire ceci :
[code:1]
function Test([string] $FileName) {
#. .\$filename
#Config.dat est renommé en .ps1
. .\config.ps1
$rep1
$fic1
$var1
}
test
#Affiche
# repertoire1
# fichier1
# variable1
[/code:1]
Tu as l'embarras du choix
Voir aussi ce tutoriel .<br><br>Message édité par: Laurent Dardenne, à: 16/12/08 19:41
L'approche suivante :
[code:1]
Write-Output $Tableau[\"$rep1\"]
[/code:1]
peut se faire, par exemple, au travers d'un hastable (clé=valeur) mais pas par un get-content qui récupère un tableaux de ligne, comme tu l'as constaté.
Ensuite sous Powershell il existe le dynamisme
[code:1]
$rep1=$null
$T=get-content config.dat
invoke-expression $T[0]
$rep1
[/code:1]
On peut ajouter du code pour rechercher dans ce tableau un élément par son nom :
[code:1]
$name=\"rep1\"
$T| Where {$_ -match \"^.$name=\"}| invoke-expression
[/code:1]
Un peu laborieux...
Sinon PowerShell propose, autour des cmdlets Export-Clixml et Import-Clixml, un mécanisme de
sérialisation des données basé sur XML. Par exemple les objets suivant :
[code:1]
$n=$null
[char] $c='a'
$p=10
$r=[ref] $p
$ti=@(5,1,485)
$ts=@(\"Un\",\"Deux\",\"Trois\"«»)
$Ht=@{1=\"Un\";2=\"Deux\";3=\"Trois\"}
[/code:1]
peuvent être sérialisés à l’aide de Export-Clixml :
[code:1]
$r,$p,10,$n,$ti,$ts,\"Test\",$False,$c,'a',-1.52|Export-clixml (join-path $pwd Test.xml)
[/code:1]
La désérialisation se faisant à l’aide de Import-Clixml, ici autour d'une affectation multiple :
[code:1]
$r,$p,$entier,$n,$ti,$ts,$String,$bool,$c,$char,$double=Import-clixml(join-path $pwd Test.xml)
[/code:1]
Cela correspond parfaitement à ce que tu veux faire, attention aux objets évolués( ex: get-process) qui eux ne seront pas recrées à l'identique.
[code:1]
$MaConfig=@{Rep1=\"Un\";Fichier1=\"Deux\";Var1=\"Trois\"}
$MaConfig|export-clixml (join-path $pwd Config.xml)
New-Variable Rep1 $MaConfig.Rep1
#ou
$rep1=\"repertoire1\"
$fic1=\"fichier1\"
$var1=\"variable1\"
$rep1,$fic1,$var1|export-clixml (join-path $pwd Config.xml)
$rep1,$fic1,$var1=Import-clixml(join-path $pwd Config.xml)
[/code]
Ou simplement faire ceci :
[code:1]
function Test([string] $FileName) {
#. .\$filename
#Config.dat est renommé en .ps1
. .\config.ps1
$rep1
$fic1
$var1
}
test
#Affiche
# repertoire1
# fichier1
# variable1
[/code:1]
Tu as l'embarras du choix

Voir aussi ce tutoriel .<br><br>Message édité par: Laurent Dardenne, à: 16/12/08 19:41
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- sonic
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 65
- Remerciements reçus 0
il y a 14 ans 9 mois #3479
par sonic
Réponse de sonic sur le sujet Re:Script et Variable
oulalala ben du coup je vais tout tester , Merci .
J'ai un peu mal en ce moment car nous avons une grosse attaque virale, pas grave mais beaucoup de boulot .
Je posterai rapidement mon choix .
J'ai un peu mal en ce moment car nous avons une grosse attaque virale, pas grave mais beaucoup de boulot .
Je posterai rapidement mon choix .
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.048 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Script et Variable (Résolu)