Question Association 2 colonnes dans CSV

Plus d'informations
il y a 3 ans 1 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 :D
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.

Plus d'informations
il y a 3 ans 1 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é :
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.

Plus d'informations
il y a 3 ans 1 mois - il y a 3 ans 1 mois #30604 par Laurent Dardenne
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.
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)"
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]

Tutoriels PowerShell
Dernière édition: il y a 3 ans 1 mois par Laurent Dardenne.

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

Plus d'informations
il y a 3 ans 1 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.

Plus d'informations
il y a 3 ans 1 mois #30606 par Laurent Dardenne
Exemple, pour l'utilisateur PaulPersonne:
 $H=@{}
  #Crée une entrée
 $H.'PaulPersonne'='Department de Paul Personne'
 
  #Obtient la valeur associée à la clé indiquée
 $H.'PaulPersonne'
Equivalent à :
 $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)
}
équivalent à :
$H=@{}

Foreach ($Item in $List)
{   
    $SamAccountName = $Item.sAMAccountName
    $Department = $Item.department
    $H.$SamAccountName=$Department
}
Ensuite
 $NomDeCle=$env:UserName
 
 $DepartmentForCurrentUser=$H.NomDeCle
ou sans variable intermédiaire :
  #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.091 secondes
Propulsé par Kunena