Question
New-Item Elément existant
- Pierre22
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 11 ans 1 mois #18944
par Pierre22
New-Item Elément existant a été créé par Pierre22
Bonjour,
Je débute avec PowerShell,
Je possède une textbox et un bouton Créer.
L'utilisateur rentre le nom d'un client et cela créer un dossier.
Cependant, je rencontre le message d'erreur suivant :
ERROR: New-Item : L'élément du nom spécifié \\192.168.1.1\Test\ existe déjà.
Voici le morceau du code qui pose soucis :
#Boutton Créer un nouveau Client
[code:1] $boutton_NouveauClient = new-object System.Windows.Forms.Button
$boutton_NouveauClient.Text = 'Créer un Nouveau Client'
$boutton_NouveauClient.Location = new-object System.Drawing.Size(200, 155)
$boutton_NouveauClient.size = new-object System.Drawing.Size(120, 30)
$Resultat_Textbox = [string]$TextBox_NouveauClient.text
# Chemin du repertoire reseau
$Chemin = \"\\192.168.1.1\Test\\"
$boutton_NouveauClient.add_Click({ New-Item -name $Resultat_Textbox -itemtype directory -Path $Chemin })
#
[/code:1]
QUand j'effectue un Test-path, il me retourne True
Si je remplace la variable $Resultat_TextBox alors il me créer le dossier.
Je n'arrive pas à trouver ce qui gêne.
Merci par avance
Pierre
Message édité par: Pierre22, à: 5/02/15 16:29<br><br>Message édité par: Pierre22, à: 5/02/15 16:29
Je débute avec PowerShell,
Je possède une textbox et un bouton Créer.
L'utilisateur rentre le nom d'un client et cela créer un dossier.
Cependant, je rencontre le message d'erreur suivant :
ERROR: New-Item : L'élément du nom spécifié \\192.168.1.1\Test\ existe déjà.
Voici le morceau du code qui pose soucis :
#Boutton Créer un nouveau Client
[code:1] $boutton_NouveauClient = new-object System.Windows.Forms.Button
$boutton_NouveauClient.Text = 'Créer un Nouveau Client'
$boutton_NouveauClient.Location = new-object System.Drawing.Size(200, 155)
$boutton_NouveauClient.size = new-object System.Drawing.Size(120, 30)
$Resultat_Textbox = [string]$TextBox_NouveauClient.text
# Chemin du repertoire reseau
$Chemin = \"\\192.168.1.1\Test\\"
$boutton_NouveauClient.add_Click({ New-Item -name $Resultat_Textbox -itemtype directory -Path $Chemin })
#
[/code:1]
QUand j'effectue un Test-path, il me retourne True
Si je remplace la variable $Resultat_TextBox alors il me créer le dossier.
Je n'arrive pas à trouver ce qui gêne.
Merci par avance
Pierre
Message édité par: Pierre22, à: 5/02/15 16:29<br><br>Message édité par: Pierre22, à: 5/02/15 16:29
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 1 mois #18946
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:New-Item Elément existant
Salut,
Pierre22 écrit:
[code:1]
$Chemin = \"C:\Temp\\"
New-Item -name '' -itemtype directory -Path $Chemin
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 5/02/15 16:38
Pierre22 écrit:
Peut être un manque de contrôle de validité du nom :Je n'arrive pas à trouver ce qui gêne.
[code:1]
$Chemin = \"C:\Temp\\"
New-Item -name '' -itemtype directory -Path $Chemin
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 5/02/15 16:38
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Pierre22
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 11 ans 1 mois #18949
par Pierre22
Réponse de Pierre22 sur le sujet Re:New-Item Elément existant
Merci pour votre réponse.
J'entre bien une série de Lettre simple comme \"Dossier\" mais il refuse de prendre en compte le contenue de la variable.
Exemple :
[code:1]# Nouveau CLIENT
#
# TextBox
$TextBox_NouveauClient = new-object System.Windows.Forms.textbox
$TextBox_NouveauClient.Location = new-object System.Drawing.Size(220, 255)
$TextBox_NouveauClient.size = new-object System.Drawing.Size(120, 30)
#Boutton Créer un nouveau Client
$boutton_NouveauClient = new-object System.Windows.Forms.Button
$boutton_NouveauClient.Text = 'Créer un Nouveau Client'
$boutton_NouveauClient.Location = new-object System.Drawing.Size(200, 155)
$boutton_NouveauClient.size = new-object System.Drawing.Size(120, 30)
$Resultat_Textbox = [string]$TextBox_NouveauClient.text
# Chemin du repertoire reseau
$Chemin = \"\\192.168.1.1\Test\\"
$boutton_NouveauClient.add_Click({ New-Item -name $Resultat_Textbox -itemtype directory -Path $Chemin })[/code:1]
Si je remplace la variable $Resultat_Textbox par le nom Dossier alors il me créer bien un dossier nommée Dossier mais si j'entre dans ma TextBox : Laurent alors là il me créer pas le dossier nommée \"Laurent\" je sais pas si je suis précis dans mes explications.
Merci<br><br>Message édité par: Pierre22, à: 5/02/15 17:03
J'entre bien une série de Lettre simple comme \"Dossier\" mais il refuse de prendre en compte le contenue de la variable.
Exemple :
[code:1]# Nouveau CLIENT
#
# TextBox
$TextBox_NouveauClient = new-object System.Windows.Forms.textbox
$TextBox_NouveauClient.Location = new-object System.Drawing.Size(220, 255)
$TextBox_NouveauClient.size = new-object System.Drawing.Size(120, 30)
#Boutton Créer un nouveau Client
$boutton_NouveauClient = new-object System.Windows.Forms.Button
$boutton_NouveauClient.Text = 'Créer un Nouveau Client'
$boutton_NouveauClient.Location = new-object System.Drawing.Size(200, 155)
$boutton_NouveauClient.size = new-object System.Drawing.Size(120, 30)
$Resultat_Textbox = [string]$TextBox_NouveauClient.text
# Chemin du repertoire reseau
$Chemin = \"\\192.168.1.1\Test\\"
$boutton_NouveauClient.add_Click({ New-Item -name $Resultat_Textbox -itemtype directory -Path $Chemin })[/code:1]
Si je remplace la variable $Resultat_Textbox par le nom Dossier alors il me créer bien un dossier nommée Dossier mais si j'entre dans ma TextBox : Laurent alors là il me créer pas le dossier nommée \"Laurent\" je sais pas si je suis précis dans mes explications.
Merci<br><br>Message édité par: Pierre22, à: 5/02/15 17:03
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 1 mois #18952
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:New-Item Elément existant
Pierre22 écrit:

Comme je n'ai pas le code pour tester, un autre pb a vérifier est la portée de la variable.
Essaie en modifiant chaque occurrence de $Resultat_Textbox par $script:Resultat_Textbox
On va faire avecje sais pas si je suis précis dans mes explications.
Comme je n'ai pas le code pour tester, un autre pb a vérifier est la portée de la variable.
Essaie en modifiant chaque occurrence de $Resultat_Textbox par $script:Resultat_Textbox
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Pierre22
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 11 ans 1 mois #18958
par Pierre22
Réponse de Pierre22 sur le sujet Re:New-Item Elément existant
Bonjour,
Je débute et j'essai de comprendre en piochant à droite et à gauche mais dur dur..
Voici l'ensemble du code
[code:1]
function OnApplicationLoad {
#Note: This function is not called in Projects
#Note: This function runs before the form is created
#Note: To get the script directory in the Packager use: Split-Path $hostinvocation.MyCommand.path
#Note: To get the console output in the Packager (Windows Mode) use: $ConsoleOutput (Type: System.Collections.ArrayList)
#Important: Form controls cannot be accessed in this function
#TODO: Add modules and custom code to validate the application load
return $true #return true for success or false for failure
}
function OnApplicationExit {
#Note: This function is not called in Projects
#Note: This function runs after the form is closed
#TODO: Add custom code to clean up and unload modules when the application exits
$script:ExitCode = 0 #Set the exit code for the Packager
}
function OnApplicationLoad
{
#Note: This function is not called in Projects
#Note: This function runs before the form is created
#Note: To get the script directory in the Packager use: Split-Path $hostinvocation.MyCommand.path
#Note: To get the console output in the Packager (Windows Mode) use: $ConsoleOutput (Type: System.Collections.ArrayList)
#Important: Form controls cannot be accessed in this function
#TODO: Add modules and custom code to validate the application load
return $true #return true for success or false for failure
}
function OnApplicationExit
{
#Note: This function is not called in Projects
#Note: This function runs after the form is closed
#TODO: Add custom code to clean up and unload modules when the application exits
$script:ExitCode = 0 #Set the exit code for the Packager
}
$form1_Load = {
#TODO: Initialize Form Controls here
#TODO: Initialize Form Controls here
[void][System.Reflection.Assembly]::LoadWithPartialName(\"System.windows.forms\"«»)
$form = new-object Windows.Forms.form
$form.Size = new-object System.Drawing.Size @(480, 400)
$form.text = \"Script Création d'affaire\"
#Boutton Valider
$boutton_Valider = new-object System.Windows.Forms.Button
$boutton_Valider.Text = 'Valider'
$boutton_Valider.Location = new-object System.Drawing.Size(300, 155)
$boutton_Valider.size = new-object System.Drawing.Size(120, 30)
$boutton_Valider.add_Click({ $nom = $listbox.get_selecteditem(); $label2.text = \"Reponse : \" + $nom2 })
# Nouveau CLIENT
#
# La TextBox
$TextBox_NouveauClient = new-object System.Windows.Forms.textbox
$TextBox_NouveauClient.Location = new-object System.Drawing.Size(220, 255)
$TextBox_NouveauClient.size = new-object System.Drawing.Size(120, 30)
#Boutton Créer un nouveau Client
$boutton_NouveauClient = new-object System.Windows.Forms.Button
$boutton_NouveauClient.Text = 'Créer un Nouveau Client'
$boutton_NouveauClient.Location = new-object System.Drawing.Size(200, 155)
$boutton_NouveauClient.size = new-object System.Drawing.Size(120, 30)
#$Resultat_Textbox = [string]$TextBox_NouveauClient.text
$script:Resultat_Textbox = [string]$TextBox_NouveauClient.text
# Chemin du repertoire reseau
#J'ai l'impression qu'il veux pas récupérer le contenue de Resultat_Textbox.... Il me dit que l'élément existe déjà..ERROR: New-Item : L'élément du nom spécifié C:\Temp\ existe déjà.ERROR: + $boutton_NouveauClient.add_Click({ New-Item <<<< -name $script:Resultat_Textbox -itemtype directory -Path $Chemin })
$Chemin = \"C:\Temp\\"
$boutton_NouveauClient.add_Click({ New-Item -name $script:Resultat_Textbox -itemtype directory -Path $Chemin })
#
# Création des Répertoires à l'intérieur du client et selon le numéro d'affaire
#
$label_NouveauClient = New-Object System.Windows.Forms.Label
$label_NouveauClient.Text = 'Crée un compte Client'
$label_NouveauClient.Location = new-object System.Drawing.Size(2000, 255)
$label_NouveauClient.size = new-object System.Drawing.Size(180, 20)
$boutton1 = new-object System.Windows.Forms.Button
$boutton1.Text = 'Valggider'
$boutton1.Location = new-object System.Drawing.Size(550, 180)
$boutton1.size = new-object System.Drawing.Size(150, 80)
$label2 = New-Object System.Windows.Forms.Label
$label2.Location = new-object System.Drawing.Size(310, 220)
$label2.size = new-object System.Drawing.Size(180, 20)
$listbox = new-object System.Windows.Forms.ListBox
# Chemin du repertoire reseau
$Chemin = \"C:\Temp\\"
# Requete pour afficher les dossiers dans la listebox
$listrep = Get-ChildItem -Path $chemin -Name
foreach ($repertoire in $listrep)
{
[void]$listbox.Items.add($repertoire)
}
# Taille et dimmension de la listbox
$listbox.Location = new-object System.Drawing.Size(50, 75)
$listbox.size = new-object System.Drawing.Size(200, 200)
$form.Controls.Add($TextBox_Num_Aff)
$form.Controls.Add($boutton_NouveauClient)
$form.Controls.Add($TextBox_NouveauClient)
$form.Controls.Add($Label_NouveauClient)
$form.Controls.Add($boutton1)
$form.Controls.Add($boutton_Valider)
$form.Controls.Add($listbox)
$form.Controls.Add($label)
$form.Controls.Add($label2)
$form.Controls.Add($Label_Num_Aff)
$Form.Add_Shown({ $form.Activate() })
[void]$form.showdialog()
}[/code:1]
Pour l'instant, je regarde pas la mise en forme, je cherche juste à faire marché et comprendre.
Merci
Message édité par: Pierre22, à: 6/02/15 10:37
Message édité par: Pierre22, à: 6/02/15 10:42
Message édité par: Pierre22, à: 6/02/15 10:43
Message édité par: Pierre22, à: 6/02/15 10:43
Message édité par: Pierre22, à: 6/02/15 10:44
Message édité par: Pierre22, à: 6/02/15 10:45
Message édité par: Pierre22, à: 6/02/15 10:47
Message édité par: Pierre22, à: 6/02/15 10:48<br><br>Message édité par: Pierre22, à: 6/02/15 10:49
Je débute et j'essai de comprendre en piochant à droite et à gauche mais dur dur..
Voici l'ensemble du code
[code:1]
function OnApplicationLoad {
#Note: This function is not called in Projects
#Note: This function runs before the form is created
#Note: To get the script directory in the Packager use: Split-Path $hostinvocation.MyCommand.path
#Note: To get the console output in the Packager (Windows Mode) use: $ConsoleOutput (Type: System.Collections.ArrayList)
#Important: Form controls cannot be accessed in this function
#TODO: Add modules and custom code to validate the application load
return $true #return true for success or false for failure
}
function OnApplicationExit {
#Note: This function is not called in Projects
#Note: This function runs after the form is closed
#TODO: Add custom code to clean up and unload modules when the application exits
$script:ExitCode = 0 #Set the exit code for the Packager
}
function OnApplicationLoad
{
#Note: This function is not called in Projects
#Note: This function runs before the form is created
#Note: To get the script directory in the Packager use: Split-Path $hostinvocation.MyCommand.path
#Note: To get the console output in the Packager (Windows Mode) use: $ConsoleOutput (Type: System.Collections.ArrayList)
#Important: Form controls cannot be accessed in this function
#TODO: Add modules and custom code to validate the application load
return $true #return true for success or false for failure
}
function OnApplicationExit
{
#Note: This function is not called in Projects
#Note: This function runs after the form is closed
#TODO: Add custom code to clean up and unload modules when the application exits
$script:ExitCode = 0 #Set the exit code for the Packager
}
$form1_Load = {
#TODO: Initialize Form Controls here
#TODO: Initialize Form Controls here
[void][System.Reflection.Assembly]::LoadWithPartialName(\"System.windows.forms\"«»)
$form = new-object Windows.Forms.form
$form.Size = new-object System.Drawing.Size @(480, 400)
$form.text = \"Script Création d'affaire\"
#Boutton Valider
$boutton_Valider = new-object System.Windows.Forms.Button
$boutton_Valider.Text = 'Valider'
$boutton_Valider.Location = new-object System.Drawing.Size(300, 155)
$boutton_Valider.size = new-object System.Drawing.Size(120, 30)
$boutton_Valider.add_Click({ $nom = $listbox.get_selecteditem(); $label2.text = \"Reponse : \" + $nom2 })
# Nouveau CLIENT
#
# La TextBox
$TextBox_NouveauClient = new-object System.Windows.Forms.textbox
$TextBox_NouveauClient.Location = new-object System.Drawing.Size(220, 255)
$TextBox_NouveauClient.size = new-object System.Drawing.Size(120, 30)
#Boutton Créer un nouveau Client
$boutton_NouveauClient = new-object System.Windows.Forms.Button
$boutton_NouveauClient.Text = 'Créer un Nouveau Client'
$boutton_NouveauClient.Location = new-object System.Drawing.Size(200, 155)
$boutton_NouveauClient.size = new-object System.Drawing.Size(120, 30)
#$Resultat_Textbox = [string]$TextBox_NouveauClient.text
$script:Resultat_Textbox = [string]$TextBox_NouveauClient.text
# Chemin du repertoire reseau
#J'ai l'impression qu'il veux pas récupérer le contenue de Resultat_Textbox.... Il me dit que l'élément existe déjà..ERROR: New-Item : L'élément du nom spécifié C:\Temp\ existe déjà.ERROR: + $boutton_NouveauClient.add_Click({ New-Item <<<< -name $script:Resultat_Textbox -itemtype directory -Path $Chemin })
$Chemin = \"C:\Temp\\"
$boutton_NouveauClient.add_Click({ New-Item -name $script:Resultat_Textbox -itemtype directory -Path $Chemin })
#
# Création des Répertoires à l'intérieur du client et selon le numéro d'affaire
#
$label_NouveauClient = New-Object System.Windows.Forms.Label
$label_NouveauClient.Text = 'Crée un compte Client'
$label_NouveauClient.Location = new-object System.Drawing.Size(2000, 255)
$label_NouveauClient.size = new-object System.Drawing.Size(180, 20)
$boutton1 = new-object System.Windows.Forms.Button
$boutton1.Text = 'Valggider'
$boutton1.Location = new-object System.Drawing.Size(550, 180)
$boutton1.size = new-object System.Drawing.Size(150, 80)
$label2 = New-Object System.Windows.Forms.Label
$label2.Location = new-object System.Drawing.Size(310, 220)
$label2.size = new-object System.Drawing.Size(180, 20)
$listbox = new-object System.Windows.Forms.ListBox
# Chemin du repertoire reseau
$Chemin = \"C:\Temp\\"
# Requete pour afficher les dossiers dans la listebox
$listrep = Get-ChildItem -Path $chemin -Name
foreach ($repertoire in $listrep)
{
[void]$listbox.Items.add($repertoire)
}
# Taille et dimmension de la listbox
$listbox.Location = new-object System.Drawing.Size(50, 75)
$listbox.size = new-object System.Drawing.Size(200, 200)
$form.Controls.Add($TextBox_Num_Aff)
$form.Controls.Add($boutton_NouveauClient)
$form.Controls.Add($TextBox_NouveauClient)
$form.Controls.Add($Label_NouveauClient)
$form.Controls.Add($boutton1)
$form.Controls.Add($boutton_Valider)
$form.Controls.Add($listbox)
$form.Controls.Add($label)
$form.Controls.Add($label2)
$form.Controls.Add($Label_Num_Aff)
$Form.Add_Shown({ $form.Activate() })
[void]$form.showdialog()
}[/code:1]
Pour l'instant, je regarde pas la mise en forme, je cherche juste à faire marché et comprendre.
Merci
Message édité par: Pierre22, à: 6/02/15 10:37
Message édité par: Pierre22, à: 6/02/15 10:42
Message édité par: Pierre22, à: 6/02/15 10:43
Message édité par: Pierre22, à: 6/02/15 10:43
Message édité par: Pierre22, à: 6/02/15 10:44
Message édité par: Pierre22, à: 6/02/15 10:45
Message édité par: Pierre22, à: 6/02/15 10:47
Message édité par: Pierre22, à: 6/02/15 10:48<br><br>Message édité par: Pierre22, à: 6/02/15 10:49
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 11 ans 1 mois #18959
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:New-Item Elément existant
Pierre22 écrit:
Là ton IHM est en vrac et manque de contrôles
J'ai l'impression que tu la codes sans Designer...
Une solution :
[code:1]
$boutton_NouveauClient.size = new-object System.Drawing.Size(120, 30)
# Chemin du repertoire reseau
$Chemin = \"C:\Temp\\"
Function OnClick_btnNouveauClient {
$script:Resultat_Textbox = [string]$TextBox_NouveauClient.text
#$DebugPreference='Continue'
#Write-Debug $TextBox_NouveauClient.Text
New-Item -name $TextBox_NouveauClient.Text -itemtype directory -Path $Chemin
}
$boutton_NouveauClient.add_Click( {OnClick_btnNouveauClient})
[/code:1]
La variable $script:Resultat_Textbox est accessible dans le script et en fin d'exécution du scriptbloc.
La fonction permet d'organiser le code et de la modifier sans toucher au reste du script.
Dans ce cas test chaque élément simplement, ensuite implémente le dans ton script final.Je débute et j'essai de comprendre en piochant à droite et à gauche mais dur dur..
Là ton IHM est en vrac et manque de contrôles
J'ai l'impression que tu la codes sans Designer...
Une solution :
[code:1]
$boutton_NouveauClient.size = new-object System.Drawing.Size(120, 30)
# Chemin du repertoire reseau
$Chemin = \"C:\Temp\\"
Function OnClick_btnNouveauClient {
$script:Resultat_Textbox = [string]$TextBox_NouveauClient.text
#$DebugPreference='Continue'
#Write-Debug $TextBox_NouveauClient.Text
New-Item -name $TextBox_NouveauClient.Text -itemtype directory -Path $Chemin
}
$boutton_NouveauClient.add_Click( {OnClick_btnNouveauClient})
[/code:1]
La variable $script:Resultat_Textbox est accessible dans le script et en fin d'exécution du scriptbloc.
La fonction permet d'organiser le code et de la modifier sans toucher au reste du script.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.054 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- New-Item Elément existant