Question
Association 2 colonnes dans CSV
- David
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 31
- Remerciements reçus 0
il y a 3 ans 10 mois #30602
par David
Réponse de David sur le sujet Association 2 colonnes dans CSV
Bonsoir,
J'ai esayé d'utiliser une hashtable. Peu glorieux
Merci d'avance
J'ai esayé d'utiliser une hashtable. Peu glorieux
Set-ExecutionPolicy -scope CurrentUser -executionpolicy bypass -Force
#variables
$pc = $env:computername
$User = $env:USERNAME
$date = Get-Date -format dd.MM.yyyy:hh.mm
$Log = "\\nancy5\deploiement$\MailevaOffice\Logs\$User on $pc\$User on $pc.txt"
$fileToCheck = "\\nancy5\deploiement$\MailevaOffice\Logs\$User on $pc"
$Path = "\\nancy5\deploiement$\MailevaOffice\Entete.jpg"
$dest = "C:\MAILEVA"
$User2 = $hash.$User
start-transcript -path $Log
if (Test-Path $fileToCheck -PathType leaf){ Remove-Item $fileToCheck -ErrorAction Ignore}
$hash = @{}
Import-Csv -Delimiter ";" -Path "\\nancy5\deploiement$\MailevaOffice\Liste.csv" | ForEach-Object -Process {$hash.Add($_.sAMAccountName,$_.department)}
$hash.GetEnumerator() | Select-Object -Property @{N='sAMAccountName';E={$_.Key}},@{N='department';E={$_.Value}}
New-Item -ItemType File -path "\\nancy5\deploiement$\MailevaOffice\Logs\$User on $pc" -name launch.bat -value "\\xxxxx.local\NETLOGON\[BTG]DeploiementMailevaOffice\MailevaOfficeSetup.exe -s -i$dest\MailevaOffice -p$User2"
#Start-Process "\\nancy5\deploiement$\MailevaOffice\Logs\$CurrentUserName on $pc\launch.bat" -Wait
new-item 'C:\MAILEVA\A_Envoyer' -itemtype directory
new-item 'C:\MAILEVA\Envoyes' -itemtype directory
new-item 'C:\MAILEVA\FondDePage' -itemtype directory
Copy-Item –Path $Path –Destination 'C:\MAILEVA\FondDePage\'
#Remove-Item -Path "\\nancy5\deploiement$\MailevaOffice\Logs\$CurrentUserName on $pc\launch.bat" -Recurse
stop-transcript
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- David
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 31
- Remerciements reçus 0
il y a 3 ans 10 mois #30603
par David
Réponse de David sur le sujet Association 2 colonnes dans CSV
Bon,
Alors,
Après pas mal de tests, j'ai réussi à quelque chose avec ce code modifié :
Tout est fonctionnel.
Sauf .... le fichier de configuration n'est pas celui associé à $User
Des idées ???
Merciii
Alors,
Après pas mal de tests, j'ai réussi à quelque chose avec ce code modifié :
Set-ExecutionPolicy -scope CurrentUser -executionpolicy bypass -Force
#variables
$List = Import-Csv "\\nancy5\deploiement$\MailevaOffice\Liste.csv" -Delimiter ';'
$pc = $env:computername
$User = $env:USERNAME
$date = Get-Date -format dd.MM.yyyy:hh.mm
$Log = "\\nancy5\deploiement$\MailevaOffice\Logs\$User\$User on $pc.txt"
$fileToCheck = "\\nancy5\deploiement$\MailevaOffice\Logs\$User"
$Path = "\\nancy5\deploiement$\MailevaOffice\Entete.jpg"
$dest = "C:\MAILEVA"
$User2 = $($Item.department)
start-transcript -path $Log
if (Test-Path $fileToCheck -PathType leaf){ Remove-Item $fileToCheck -ErrorAction Ignore}
$H=@{}
Foreach ($Item in $List)
{
$sAMAccountName = $Item.sAMAccountName
$department = $Item.department
Write-warning "sAMAccountName=$($Item.sAMAccountName) department= $($Item.department)" #TODO à supprimer
}
New-Item -ItemType File -path "\\nancy5\deploiement$\MailevaOffice\Logs\$User" -name launch.bat -value "\\xxxxx.local\NETLOGON\[BTG]DeploiementMailevaOffice\MailevaOfficeSetup.exe -s -i$dest\MailevaOffice -p$User2"
#Start-Process "\\nancy5\deploiement$\MailevaOffice\Logs\$User\launch.bat" -Wait
new-item 'C:\MAILEVA\A_Envoyer' -itemtype directory
new-item 'C:\MAILEVA\Envoyes' -itemtype directory
new-item 'C:\MAILEVA\FondDePage' -itemtype directory
Copy-Item –Path $Path –Destination 'C:\MAILEVA\FondDePage\'
#Remove-Item -Path "\\nancy5\deploiement$\MailevaOffice\Logs\$User\launch.bat" -Recurse
stop-transcript
Tout est fonctionnel.
Sauf .... le fichier de configuration n'est pas celui associé à $User
Des idées ???
Merciii
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 10 mois - il y a 3 ans 10 mois #30604
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Association 2 colonnes dans CSV
La hashtable n'est pas renseignée, juste crée. Elle est donc vide.
Et $User2 = $($Item.department) référence une variable qui n'existe pas au début du script. $User2 ne contient pas de nom clé (le user courant) mais $null.
Une hashatable c'est NomDeClé = Valeur :
$H.$User ou $H.$env:USERNAME
Puisque tu construis une hashtable avec les noms des users en tant que nom de clé, tu dois spécifier le nom de l'utilisateur ouvrant la session afin de récupèrer l'information associée.[/code]
Et $User2 = $($Item.department) référence une variable qui n'existe pas au début du script. $User2 ne contient pas de nom clé (le user courant) mais $null.
New-Item -ItemType File -path "\\nancy5\deploiement$\MailevaOffice\Logs\$User" -name launch.bat -value "\\xxxxx.local\NETLOGON\[BTG]DeploiementMailevaOffice\MailevaOfficeSetup.exe -s -i$dest\MailevaOffice -p $(H.$User)"
$H.$User ou $H.$env:USERNAME
Puisque tu construis une hashtable avec les noms des users en tant que nom de clé, tu dois spécifier le nom de l'utilisateur ouvrant la session afin de récupèrer l'information associée.[/code]
Tutoriels PowerShell
Dernière édition: il y a 3 ans 10 mois par Laurent Dardenne.
Connexion ou Créer un compte pour participer à la conversation.
- David
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 31
- Remerciements reçus 0
il y a 3 ans 10 mois #30605
par David
Réponse de David sur le sujet Association 2 colonnes dans CSV
J'imagine avec ce bout de code mais je n'arrive ps à le mettre en forme :
$H=@{}
Foreach ($Item in $List)
{
ForEach-Object -Process {$hash.Add($_.sAMAccountName,$_.department)}
$hash.GetEnumerator() | Select-Object -Property @{N='sAMAccountName';E={$_.Key}},@{N='department';E={$_.Value}}
$sAMAccountName = $Item.sAMAccountName
$department = $Item.department
}
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 10 mois #30606
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Association 2 colonnes dans CSV
Exemple, pour l'utilisateur PaulPersonne:Equivalent à :
La création de la hashtable à partir du csv :équivalent à :Ensuiteou sans variable intermédiaire :
$H=@{}
#Crée une entrée
$H.'PaulPersonne'='Department de Paul Personne'
#Obtient la valeur associée à la clé indiquée
$H.'PaulPersonne'
$H=@{}
$NomDeClé='PaulPersonne'
$H.$NomDeClé='Department de Paul Personne'
$DepartmentForCurrentUser=$H.NomDeCle
La création de la hashtable à partir du csv :
$H=@{}
Foreach ($Item in $List)
{
$SamAccountName = $Item.sAMAccountName
$Department = $Item.department
$H.Add($SamAccountName,$Department)
}
$H=@{}
Foreach ($Item in $List)
{
$SamAccountName = $Item.sAMAccountName
$Department = $Item.department
$H.$SamAccountName=$Department
}
$NomDeCle=$env:UserName
$DepartmentForCurrentUser=$H.NomDeCle
#Le nom du département pour l'utilisateur courant (GPO) est
$DepartmentForCurrentUser=$H.$env:UserName
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.136 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Association 2 colonnes dans CSV