Question selection plusieurs items combobox

Plus d'informations
il y a 8 ans 1 mois #24963 par Philippe
pour inséré une variable dans une chaine de caractère tu doit utilisé des guillemets
[code:1]$vtab1 = \"Bureau, $bureau\"[/code:1]
mais je suis pas sur de comprendre ce que tu veux faire
ton script fais un tableau ou tu ne prend que le premier éléments !!

si ton but est d'afficher le chemin après le nom dossier tu peut comme ça :
[code:1]$bureau = \"$env:USERPROFILE\Desktop\"
$vtab1 = \"Bureau $bureau\"
[void]$lb_path1.Items.Add($vtab1)[/code:1]

tu peux faire un tableau avec deux colonnes qui est en faite un tableau d'objet comme ci-dessous plus simple a géré :
[code:1]dossier chemin

bureau C:\Users\xxx\Desktop[/code:1]
mais si tu ne veux afficher que la colonne dossier
tu peut comme ceci :
[code:1]$vtab1 = New-Object PSObject
$vtab1 | Add-Member -Name dossier -MemberType NoteProperty -Value \"bureau\"
$vtab1 | Add-Member -Name chemin -MemberType NoteProperty -Value $bureau
[void]$lb_path1.Items.Add($vtab1[0].dossier)
[/code:1]
cette méthode te simplifie la vie après,
quand tu doit géré plusieurs dossiers !!

Message édité par: 6ratgus, à: 9/02/18 17:43

Message édité par: 6ratgus, à: 9/02/18 17:45

Message édité par: 6ratgus, à: 9/02/18 17:47<br><br>Message édité par: 6ratgus, à: 9/02/18 17:49

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

Plus d'informations
il y a 8 ans 1 mois #25024 par flavien
Merci pour tes réponses.

J'ai un autre soucis.
Je désire sélectionner un dossier via un explorer qui me creer un item dans ma combobox. Lorsque je selectionne mon dossier il est bien afficher dans al combobox mais mon tableau au moment de la copie à une valeur nulle. Je n'arrive pas à lui fixer de valeur. Du coup s'il y a un seul item dans la combobox la copie fonctionne mais avec plusieurs dossiers cela ne marche pas.

[code:1]
function Copy-ItemUsingExplorer{
$objShell = New-Object -ComObject 'Shell.Application'
$objFolder = $objShell.NameSpace((gi $objdestin).FullName)
$objFolder.CopyHere((gi $objsource).FullName,$CopyFlags)
}

$btn_select.add_click({

#Déclaration de la Fonction : Select-Folder

function Select-Folder($message='Selectionner un répertoire', $path = 0)
{
$object = New-Object -comObject Shell.Application

$folder = $object.BrowseForFolder(0, $message, 0, $path)
if ($folder -ne $null)
{
$folder.self.Path
}
}
#Fin de la déclaration

#Si vous souhaitez placer le parcours de dossier sur un répertoire par défaut, il suffit d'ajouter ce paramètre : -path \&quot;VOTRE CHEMIN\&quot;
$folderpath=Select-Folder 'Selectionner un répertoire' -path \&quot;C:\\&quot;

#Variable pour récupérer le chemin du répertoire sélectionné
[void]$lb_folder.Items.Add($folderpath)
})

$btn_sauvegarder2.Add_Click({
if (-not(Test-Path $destination1 )){# création du dossier utilisateur
New-Item -Path $destination1 -ItemType directory}
If (!(Test-Path $destinationfinal)){ # création du dossier utilisateur
New-Item -path $destinationfinal -ItemType directory
}
$objdestin = Get-Item -Path $destinationfinal
$objsource = Get-Item -Path $lb_folder.Items
$CopyFlags = \&quot;0x0\&quot;
Copy-ItemUsingExplorer
write-host -f green \&quot;test !\&quot;
})
[/code:1]

Je désire avoir l'explorer afin d'avoir le temps de la copie. Car sinon en utilisant le code suivant cela fonctionne avec plusieurs dossiers mais du coup je n'ai pas le temps de la copie.

[code:1]$btn_sauvegarder2.Add_Click({
Copy-Item -Path $lb_folder.Items -Destination $destinationfinal -recurse -force -verbose
})[/code:1]

Merci d'avance car la je ne trouve pas la solution.

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

Plus d'informations
il y a 8 ans 1 mois #25026 par Philippe

Je désire avoir l'explorer afin d'avoir le temps de la copie. Car sinon en utilisant le code suivant cela fonctionne avec plusieurs dossiers mais du coup je n'ai pas le temps de la copie.

alors je sais pas comment t'aider !
tu doit faire une boucle pour géré la liste de dossiers sélectionné, comme lors de la sélection des dossiers,
mais bien sur avec la liste des dossiers sélectionnés

quelque chose comme ça avec la bonne variable a la place de \&quot;$destinationfinal\&quot;
pour chaque dossier si diffèrent :
[code:1]$btn_sauvegarder2.Add_Click({
$lb_folder.SelectedItems | foreach {
if (-not(Test-Path $destination1 )) {# création du dossier utilisateur
New-Item -Path $destination1 -ItemType directory}
If (!(Test-Path $destinationfinal)) { # création du dossier utilisateur
New-Item -path $destinationfinal -ItemType directory
}
$objdestin = Get-Item -Path $destinationfinal
$objsource = Get-Item -Path $_
$CopyFlags = \&quot;0x0\&quot;
Copy-ItemUsingExplorer
write-host -f green \&quot;test !\&quot;
}
})[/code:1]

mais c'est quoi la différence entre $destination1 et $destinationfinal ! car il faut les remplacer par la bonne variable !

pour moi $destinationfinal devrais être le dossier de base de destination !


correction après test de la fonction Copy-ItemUsingExplorer tu devrais être bon comme ça
!!
Message édité par: 6ratgus, à: 16/02/18 16:29

Message édité par: 6ratgus, à: 16/02/18 16:31<br><br>Message édité par: 6ratgus, à: 16/02/18 16:35

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

Plus d'informations
il y a 8 ans 1 mois #25031 par flavien
Super ça fonctionne, un grand merci!!!

Petite question technique la variable $_ represente la valeur en cours si j'ai bien compris?

Sinon juste pour info concernant la différence des deux variables $destinationfinal et la $destinationfinal1

[code:1]$destination1 = \&quot;D:\test script2\&quot;
$destinationfinal = $destination1+\&quot;\\&quot;+$env:username+\&quot;\\&quot;[/code:1]

Voila en tout cas un énorme merci à toi.

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

Plus d'informations
il y a 8 ans 1 mois #25033 par Philippe

Super ça fonctionne, un grand merci!!!

de rien :)

Petite question technique la variable $_ represente la valeur en cours si j'ai bien compris?

oui la en cours via un pipeline
exemple dans un foreach elle représente l'objet courant dans le tableau ou collection passer a travers le pipeline :
[code:1]
# remplisage d'un tableau d'objet ici des strings et des integer mais on mixer avec autre chose !!
$tableau = @(\&quot;premier\&quot;,
\&quot;deuxieme\&quot;,
\&quot;un autre\&quot;,
\&quot;etc...\&quot;,
123,
453)

$tableau | foreach {
# affiche chaque element les un apres les autres en indiquent leurs types
Write-Host $_ -NoNewline
Write-Host `t $_.GetType() -ForegroundColor Yellow
}[/code:1]

je te conseil de lire quelques sites comme celui ci pour une approche rapide de poweshell,
ou les tutos tres complets de laurent dardenne
ou encore le livre de Robin et Arnaud que tu vois a gauche<br><br>Message édité par: 6ratgus, à: 20/02/18 11:59

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

Plus d'informations
il y a 8 ans 1 mois #25035 par flavien
Merci, je suis entrain de relire certains passages du livre.

PAr contre j'ai une autre question car la je pense que ce n'est pas grand chose. J'aimerais récupérer la valeur d'un item afin de l'intégrer dans une variable. Mais vuq ue c'est un object je récupère la valeur suivante. \&quot;System.Windows.Controls.TextBox\&quot;
Du coup quand je l'utilise dans une autre variable j'ai la syntaxe suivante \&quot;D:\test script2\\Favorites\&quot; et mon chemin n'est donc pas bon.

[code:1]

$lb_createvar_resto_1 = $form.findname('LB_CREATEVAR_RESTO_1')
$btn_createvar_resto_1 = $form.findname('BTN_CREERVARIABLE_RESTO_1')
$txt_vuser_resto_1 = $form.findname('TXT_VUSER_RESTO_1')
$btn_supprimer_ajouter_1 = $form.findname('BTN_AJOUTER_RESTO_1')
$depart = \&quot;D:\test script2\&quot;
$depart1 = $depart+\&quot;\\&quot;+\&quot;$testuser\&quot;+\&quot;\\&quot;+\&quot;Favorites\&quot;

$btn_createvar_resto_1.add_Click({

If (((-NOT [string]::IsNullOrEmpty($txt_vuser_resto_1.text))) -and (( [string]::IsNullOrEmpty($lb_createvar_resto_1.items))))
{
$lb_createvar_resto_1.Items.Clear()
$lb_createvar_resto_1.items.add($txt_vuser_resto_1.text)
}
Elseif (((-NOT [string]::IsNullOrEmpty($txt_vuser_resto_1.text))) -and ((-NOT [string]::IsNullOrEmpty($lb_createvar_resto_1.items))))
{
$lb_createvar_resto_1.Items.Clear()
$testuser = $txt_vuser_resto_1.text
$lb_createvar_resto_1.items.add($txt_vuser_resto_1.text)
}
Else
{
$lb_createvar_resto_1.Items.Clear()
Write-Host 'Merci de saisir une variable'
}
})

$btn_deletevar_resto_1.add_click({
$lb_createvar_resto_1.Items.Clear()
$txt_vuser_resto_1.clear()
})


$btn_supprimer_ajouter_1.Add_Click({
New-Variable -Name test1 -Value $txt_vuser_resto_1.text
write-host -f green $testuser
$lb_pathasave_resto1.Items.Add($testuser)
})
[/code:1]

ps: J'ai essayé différentes méthode avec la commande New-Variable par exemple, mais j'ai toujours le même problème car la valeur de ma variable $testuser doit corespondre au nom de l'utilisateur. En occurance au texte de la Listbox.

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

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