Question Association 2 colonnes dans CSV

Plus d'informations
il y a 3 ans 1 mois - il y a 3 ans 1 mois #30592 par David
Réponse de David sur le sujet Association 2 colonnes dans CSV
Merci Laurent,

Voici le script intégral, j'ai une erreur, je ne vois pas ou j'ai raté quelque chose ... Si ton oeil averti peut m'éclairer ...
Set-ExecutionPolicy -scope CurrentUser -executionpolicy bypass -Force
#variables
$chem1list='\\nancy5\deploiement$\MailevaOffice\Liste.csv' 
$list=import-csv $chem1list -Delimiter ';'
$pc = $env:computername
$CurrentUserName=$env:USERNAME
$date = Get-Date -format dd.MM.yyyy:hh.mm
$Log = "\\nancy5\deploiement$\MailevaOffice\Logs\$CurrentUserName on $pc\$CurrentUserName on $pc.txt"
$fileToCheck = "\\nancy5\deploiement$\MailevaOffice\Logs\$CurrentUserName on $pc"
$Path = "\\nancy5\deploiement$\MailevaOffice\Entete.jpg"
$dest = "C:\MAILEVA"
$user = get-aduser -Identity "$CurrentUserName" -Properties *

start-transcript -path $Log

$H=@{}
Foreach ($Item in $List)
{
    $H.Add($Item.SamAccountName,$Item.Department)
}

if (Test-Path $fileToCheck -PathType leaf){ Remove-Item $fileToCheck -ErrorAction Ignore}

New-Item -ItemType File -path "\\nancy5\deploiement$\MailevaOffice\Logs\$CurrentUserName on $pc" -name launch.bat -value "\\xxxxx.local\NETLOGON\[BTG]DeploiementMailevaOffice\MailevaOfficeSetup.exe -s -i$dest\MailevaOffice -p$H.$UserName"
Start-Process "\\nancy5\deploiement$\MailevaOffice\Logs\$session 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

Un extrait de mon csv :[img][URL=https://www.casimages.com/i/21030701563770213.jpg.html][IMG]https://nsa40.casimages.com/img/2021/03/07/21030701563770213.jpg[/img][/URL][/img]https://www.casimages.com/i/21030701563770213.jpg.html

Fichier attaché :


Voici l'erreur :



Merci par avance de me dire ou j'ai merdé 
Bon dimanche



[img][URL=https://www.casimages.com/i/21030701563770213.jpg.html][IMG]https://nsa40.casimages.com/img/2021/03/07/mini_21030701563770213.jpg[/img][/url][/img][img][URL=https://www.casimages.com/i/21030701563770213.jpg.html][IMG]https://nsa40.casimages.com/img/2021/03/07/mini_21030701563770213.jpg[/img][/url][/img]
Dernière édition: il y a 3 ans 1 mois par David.

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

Plus d'informations
il y a 3 ans 1 mois #30593 par Laurent Dardenne
$UserName est $null car tu déclares un autre nom :-)
$CurrentUserName=$env:USERNAME

Visible avec :
Set-StrictMode -Version latest

Tutoriels PowerShell

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

Plus d'informations
il y a 3 ans 1 mois #30594 par David
Réponse de David sur le sujet Association 2 colonnes dans CSV
Je dois être fatigué ou un peu limité mais je ne comprends pas...
Je vais essayer de poser tout cela et y reflechir
Merci Laurent

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

Plus d'informations
il y a 3 ans 1 mois #30595 par Laurent Dardenne
>>Je dois être fatigué
Non, j'ai répondu trop rapidement sur le second pb et ai oublié le pb principal...

Vérifie la structure des objets crées par import-csv.
Ajoute une trace :
Write-warning "SamAccountName=$($Item.SamAccountName)  Department= $($Item.Department)" #TODO à supprimer
$H.Add($Item.SamAccountName,$Item.Department)

Tutoriels PowerShell

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 #30598 par David
Réponse de David sur le sujet Association 2 colonnes dans CSV
Après avoir pas mal bricolé, me voici en ayant avancé un peu.Mon script mis à jour : 
Set-ExecutionPolicy -scope CurrentUser -executionpolicy bypass -Force
#variables
$List = Import-Csv "\\nancy5\deploiement$\MailevaOffice\users.csv" -Delimiter ';' 
$pc = '$env:computername'
$CurrentUserName = '$env:USERNAME'
$date = Get-Date -format dd.MM.yyyy:hh.mm
$Log = "\\nancy5\deploiement$\MailevaOffice\Logs\$CurrentUserName on $pc\$CurrentUserName on $pc.txt"
$fileToCheck = "\\nancy5\deploiement$\MailevaOffice\Logs\$CurrentUserName on $pc"
$Path = "\\nancy5\deploiement$\MailevaOffice\Entete.jpg"
$dest = "C:\MAILEVA"
$user = get-aduser -Identity "$CurrentUserName" -Properties *

start-transcript -path $Log

$H=@{}
Foreach ($Item in $List)
{
    $H.Add($Item.sAMAccountName,$Item.department)
}

if (Test-Path $fileToCheck -PathType leaf){ Remove-Item $fileToCheck -ErrorAction Ignore}

New-Item -ItemType File -path "\\nancy5\deploiement$\MailevaOffice\Logs\$CurrentUserName on $pc" -name launch.bat -value "\\xxxxx.local\NETLOGON\[BTG]DeploiementMailevaOffice\MailevaOfficeSetup.exe -s -i$dest\MailevaOffice -p$Item.department"
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

Voici la commande qui m'est retournée dans mon launch.bat :

\\xxxxx.local\NETLOGON\[BTG]DeploiementMailevaOffice\MailevaOfficeSetup.exe -s -iC:\MAILEVA\MailevaOffice -p@{sAMAccountName=POIUYT; department=\\xxxxx.local\NETLOGON\[BTG]DeploiementMailevaOffice\Conf\BTGSA.FINANCE.xml}.department
\\xxxxx.local\NETLOGON\[BTG]DeploiementMailevaOffice\MailevaOfficeSetup.exe -s -iC:\MAILEVA\MailevaOffice -p\\xxxxx.local\NETLOGON\[BTG]DeploiementMailevaOffice\Conf\BTGSA.FINANCE.xml
Cette partie en rouge est fausse
La partie en vert est celle que j'attends
Comment faire pour que s'inscrive ici le xml correspondant au user qui ouvre la session ?

Merci par avance
Dernière édition: il y a 3 ans 1 mois par David.

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 #30599 par Laurent Dardenne
Il faut préciser une substitution :
-p ${$Item.department}

Mais codé ainsi c'est faux.$Item aura tjr la même valeur (la dernière de l'itération de $list)
Tu devrais étudier le fonctionnement d'une hashtable.
A partir de $H, tu dois préciser un nom de clé afin de récupèrer le department de l'utilsateur courant.
Le contenu de $H sera tjr le même seule la clé change pour chaque utilisateur.

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.

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