Question
creation de fichiers ini en lot
- vincent
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 17 ans 6 mois #2748
par vincent
creation de fichiers ini en lot a été créé par vincent
bonjour,
j'ouvre un nouveau post pour vous exposer mon nouveau problème.
Je veux créer un fichier ini par utilisateur. Ce fichier comporte la meme chose pour tout le monde sauf le champs 'login' qui doit etre modifié a chaque fois.
Chaque fichier doit etre enregistré sous le nom 'login'.ini
Voici le début de code que j'ai fait :
[code:1]$var=@(Import-Csv \"E:\tests\liste.csv\"«»)
foreach($v in $var)
{
$file = new-item \"e:\temp\$v.login.ini\" –type file -force
}
[/code:1]
J'ai une erreur à ma fonction import-csv. Je ne vois pas ce qui cloche.
Merci d'avance
j'ouvre un nouveau post pour vous exposer mon nouveau problème.
Je veux créer un fichier ini par utilisateur. Ce fichier comporte la meme chose pour tout le monde sauf le champs 'login' qui doit etre modifié a chaque fois.
Chaque fichier doit etre enregistré sous le nom 'login'.ini
Voici le début de code que j'ai fait :
[code:1]$var=@(Import-Csv \"E:\tests\liste.csv\"«»)
foreach($v in $var)
{
$file = new-item \"e:\temp\$v.login.ini\" –type file -force
}
[/code:1]
J'ai une erreur à ma fonction import-csv. Je ne vois pas ce qui cloche.
Merci d'avance
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 17 ans 6 mois #2749
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:creation de fichiers ini en lot
vinsmimie écrit:
vinsmimie écrit:
Comment comptes-tu modifier le contenu de chaque nouveau fichier ?
Combien de champs comporte ton fichier csv ?
Et il me semble que c'est plutôt ceci \"e:\temp\$($v.nomDeChamp).login.ini\"
Laquelle ?J'ai une erreur à ma fonction import-csv.
vinsmimie écrit:
Si tu nous donnais un peu plus d'informations ce serait déjà pas mal.Je ne vois pas ce qui cloche.
Comment comptes-tu modifier le contenu de chaque nouveau fichier ?
Combien de champs comporte ton fichier csv ?
Et il me semble que c'est plutôt ceci \"e:\temp\$($v.nomDeChamp).login.ini\"
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- vincent
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 17 ans 6 mois #2750
par vincent
Réponse de vincent sur le sujet Re:creation de fichiers ini en lot
Bonjour Laurent,
Je vais t'exposer mon problème. J'ai un fichier ini à créer par utilisateur (1200 utilisateurs).
Chaques fichier ini doit porter le nom de login de l'utilisateur.
Voici le contenu de chaque fichier :
Je me suis alors penché vers le PS. Apparemment je peux créer des fichiers portant le nom de chaque login à partir d'un fichier csv.
Par contre je ne sais pas comment remplir ces fichiers.
As tu une idée ?
Merci d'avance
Cordialement,
Vincent
Je vais t'exposer mon problème. J'ai un fichier ini à créer par utilisateur (1200 utilisateurs).
Chaques fichier ini doit porter le nom de login de l'utilisateur.
Voici le contenu de chaque fichier :
Au début j'ai pensé à un simple publipostage word, mais je n'arrive pas à enregistrer toutes mes fusions avec des noms différents.privilege=none
#fullscreen=yes
resolution=1024x768
inactive=150
connect=rdp \
host=192.168.9.6 \
description= \"Bureau Virtuel\" \
icon=default \
username=\"LOGIN\" \
autoconnect=1
autosignoff=yes
shutdown=yes
Je me suis alors penché vers le PS. Apparemment je peux créer des fichiers portant le nom de chaque login à partir d'un fichier csv.
Par contre je ne sais pas comment remplir ces fichiers.
As tu une idée ?
Merci d'avance
Cordialement,
Vincent
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 17 ans 6 mois #2751
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:creation de fichiers ini en lot
Salut,
voici une possible solution :
[code:1]
#Here-string simple-quote pour un usage avec ExpandString
$LoginTemplate=@'
privilege=none
#fullscreen=yes
resolution=1024x768
inactive=150
connect=rdp
host=192.168.9.6
description= \"Bureau Virtuel\"
icon=default
username=$LoginName
autoconnect=1
autosignoff=yes
shutdown=yes
'@
#Au moins un champ, nommé Name
Import-Csv \"E:\tests\liste.csv\"«»)|% {
#Récupération du nom
$LoginName=$_.Name
#
$ExecutionContext.InvokeCommand.ExpandString($LoginTemplate)|Out-file \"E:\tests\$LoginName.login.ini\"
}
[/code:1]
La \"here-string\" doit être en simple quote car en double quote la méthode ExpandString ne fonctionne pas, cette méthode retarde la substitution.
Si on utilise
[code:1]
$LoginName=$_.Name
$LoginTemplate|Out-file \"E:\tests\$LoginName.login.ini\"
[/code:1]
la substitution ne fonctionne pas.
A moins de déporter la déclaration de $LoginTemplate dans le corps de le Foreach-object (%) mais il est préférable de séparer les déclarations des données des traitements.
[code:1]
$LoginName=$_.Name
$LoginTemplate=@\"
privilege=none
username=$LoginName
shutdown=yes
\"@
$LoginTemplate|Out-file \"E:\tests\$LoginName.login.ini\"
[/code:1]
Cette méthode est citée par Bruce Payette dans son livre \"PowerShell in action\".
voir aussi
cashfoley.com/2007/10/09/DeferredStringE...ionInPowershell.aspx
voici une possible solution :
[code:1]
#Here-string simple-quote pour un usage avec ExpandString
$LoginTemplate=@'
privilege=none
#fullscreen=yes
resolution=1024x768
inactive=150
connect=rdp
host=192.168.9.6
description= \"Bureau Virtuel\"
icon=default
username=$LoginName
autoconnect=1
autosignoff=yes
shutdown=yes
'@
#Au moins un champ, nommé Name
Import-Csv \"E:\tests\liste.csv\"«»)|% {
#Récupération du nom
$LoginName=$_.Name
#
$ExecutionContext.InvokeCommand.ExpandString($LoginTemplate)|Out-file \"E:\tests\$LoginName.login.ini\"
}
[/code:1]
La \"here-string\" doit être en simple quote car en double quote la méthode ExpandString ne fonctionne pas, cette méthode retarde la substitution.
Si on utilise
[code:1]
$LoginName=$_.Name
$LoginTemplate|Out-file \"E:\tests\$LoginName.login.ini\"
[/code:1]
la substitution ne fonctionne pas.
A moins de déporter la déclaration de $LoginTemplate dans le corps de le Foreach-object (%) mais il est préférable de séparer les déclarations des données des traitements.
[code:1]
$LoginName=$_.Name
$LoginTemplate=@\"
privilege=none
username=$LoginName
shutdown=yes
\"@
$LoginTemplate|Out-file \"E:\tests\$LoginName.login.ini\"
[/code:1]
Cette méthode est citée par Bruce Payette dans son livre \"PowerShell in action\".
voir aussi
cashfoley.com/2007/10/09/DeferredStringE...ionInPowershell.aspx
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.084 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- creation de fichiers ini en lot