Question creation de fichiers ini en lot

Plus d'informations
il y a 17 ans 6 mois #2748 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

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

Plus d'informations
il y a 17 ans 6 mois #2749 par Laurent Dardenne
vinsmimie écrit:

J'ai une erreur à ma fonction import-csv.

Laquelle ?
vinsmimie écrit:

Je ne vois pas ce qui cloche.

Si tu nous donnais un peu plus d'informations ce serait déjà pas mal.
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.

Plus d'informations
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 :

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

Au début j'ai pensé à un simple publipostage word, mais je n'arrive pas à enregistrer toutes mes fusions avec des noms différents.
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.

Plus d'informations
il y a 17 ans 6 mois #2751 par Laurent Dardenne
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

Tutoriels PowerShell

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

Temps de génération de la page : 0.084 secondes
Propulsé par Kunena