Résolu Rendre des champs obligatoires
- Matthieu
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 36
- Remerciements reçus 0
il y a 1 an 9 mois - il y a 1 an 9 mois #33931
par Matthieu
Rendre des champs obligatoires a été créé par Matthieu
Bonjour,
Toujours dans le développement de mon application de télédistribution, j'essaie de rendre les champs $textboxMachineName et $textboxFilePath obligatoires mais j'ai une erreur...
Set-Item : WinRM ne peut pas traiter la demande de configuration. Le modèle de nom d’hôte n’est pas valide: «» Les modèles de noms d’hôte doivent contenir un ou plusieurs modèles. Un modèle
ne peut contenir qu’un seul caractère générique («*»). Le modèle spécial «<local>» peut être utilisé pour indiquer tous les noms d’hôtes ne comportant pas un «.». Pour approuver tous les
hôtes, utilisez «*» comme seul modèle.
Au caractère Ligne:107 : 13
+ Set-Item WSMan:\localhost\Client\TrustedHosts -Value $new ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ((: ) [Set-Item], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetItemCommand
New-Item : Le chemin d'accès n'a pas une forme conforme.
Au caractère Ligne:119 : 5
+ New-Item -Path $RemoteFolderPath -ItemType Directory | Out-Null
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (\\\c$\Temp\:String) [New-Item], ArgumentException
+ FullyQualifiedErrorId : CreateDirectoryArgumentError,Microsoft.PowerShell.Commands.NewItemCommand
Le dossier \\\c$\Temp\ a été créé.
Copy-Item : Impossible de lier l'argument au paramètre « Path », car il s'agit d'une chaîne vide.
Au caractère Ligne:126 : 17
+ Copy-Item -Path $FilePath -Destination $RemoteFolderPath
+ ~~~~~~~~~
+ CategoryInfo : InvalidData : ((: ) [Copy-Item], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.CopyItemCommand
Toujours dans le développement de mon application de télédistribution, j'essaie de rendre les champs $textboxMachineName et $textboxFilePath obligatoires mais j'ai une erreur...
# Importation de la librairie
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# Création de l'objet de formulaire
$form = New-Object System.Windows.Forms.Form
$form.Text = "Télédistribution"
$form.Size = New-Object System.Drawing.Size(600,230)
$form.StartPosition = "CenterScreen"
# Champ pour saisir le nom de la machine
$labelMachineName = New-Object System.Windows.Forms.Label
$labelMachineName.Text = "Nom de la machine ou adresse IP (*) :"
$labelMachineName.Location = New-Object System.Drawing.Point(10,20)
$labelMachineName.AutoSize="$true"
$form.Controls.Add($labelMachineName)
$textboxMachineName = New-Object System.Windows.Forms.TextBox
$textboxMachineName.Location = New-Object System.Drawing.Point(210,15)
$textboxMachineName.Width=360
$form.Controls.Add($textboxMachineName)
# Bouton pour parcourir et sélectionner le fichier MSI
$labelFilePath = New-Object System.Windows.Forms.Label
$labelFilePath.Text = "Fichier MSI (*) :"
$labelFilePath.Location = New-Object System.Drawing.Point(10,50)
$labelFilePath.AutoSize="$true"
$form.Controls.Add($labelFilePath)
$buttonBrowse = New-Object System.Windows.Forms.Button
$buttonBrowse.Text = "Parcourir"
$buttonBrowse.Location = New-Object System.Drawing.Point(210,45)
$buttonBrowse.Add_Click({
$openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$openFileDialog.Filter = "Fichiers MSI (*.msi)|*.msi|Tous les fichiers (*.*)|*.*"
$openFileDialog.Title = "Sélectionnez un fichier MSI"
if ($openFileDialog.ShowDialog() -eq 'OK') {
$textboxFilePath.Text = $openFileDialog.FileName
}
})
$form.Controls.Add($buttonBrowse)
$textboxFilePath = New-Object System.Windows.Forms.TextBox
$textboxFilePath.Location = New-Object System.Drawing.Point(210,75)
$textboxFilePath.Width=360
$textboxFilePath.ReadOnly = $true
$form.Controls.Add($textboxFilePath)
# Champ pour saisir des arguments du fichier MSI
$labelArgumentsMSI = New-Object System.Windows.Forms.Label
$labelArgumentsMSI.Text = "Arguments du fichier MSI:"
$labelArgumentsMSI.Location = New-Object System.Drawing.Point(10,110)
$labelArgumentsMSI.AutoSize="$True"
$form.Controls.Add($labelArgumentsMSI)
$textboxArgumentsMSI = New-Object System.Windows.Forms.TextBox
$textboxArgumentsMSI.Location = New-Object System.Drawing.Point(210,105)
$textboxArgumentsMSI.Width=360
$form.Controls.Add($textboxArgumentsMSI)
# Fonction pour la validation des champs
function ValiderChamps {
if ($textboxMachineName.Text -eq "" -or $textboxFilePath.Text -eq "") {
[System.Windows.Forms.MessageBox]::Show("Veuillez remplir tous les champs obligatoires.", "Erreur", [System.Windows.Forms.MessageBoxButtons]::OK, [System.Windows.Forms.MessageBoxIcon]::Error)
} else {
}
}
# Bouton OK pour valider et fermer le formulaire
$buttonOK = New-Object System.Windows.Forms.Button
$buttonOK.Text = "Lancer la télédistribution"
$buttonOK.Location = New-Object System.Drawing.Point(410,145)
$buttonOK.AutoSize="$true"
$buttonOK.Add_Click({
$Script:RemoteComputer = $textboxMachineName.Text
$Script:FilePath = $textboxFilePath.Text
$Script:argumentsMSI = $textboxArgumentsMSI.Text
$form.Close()
ValiderChamp
})
$form.Controls.Add($buttonOK)
# Affichage du formulaire
$form.ShowDialog() | Out-Null
# Vérifier si la liste des TrustedHosts existe
if (-not (Test-Path WSMan:\localhost\Client\TrustedHosts)) {
# Si elle n'existe pas, la créer avec la machine $Script:RemoteComputer
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $Script:RemoteComputer -Force
} else {
# Si elle existe, vérifier si elle est vide
$currentTrustedHosts = (Get-Item WSMan:\localhost\Client\TrustedHosts).Value
if (-not $currentTrustedHosts) {
# Si elle est vide, ajouter la machine $Script:RemoteComputer
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $Script:RemoteComputer -Force
} else {
# Si elle n'est pas vide, vérifier si la machine $Script:RemoteComputer existe
$hostsArray = $currentTrustedHosts -split ','
if ($Script:RemoteComputer -notin $hostsArray) {
# Si elle n'existe pas, ajouter la machine $Script:RemoteComputer à la suite des autres machines
$newTrustedHosts = $currentTrustedHosts + "," + $Script:RemoteComputer
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $newTrustedHosts -Force
}
# Si elle existe, ne rien faire
}
}
# Déclaration des détails du poste distant
$RemoteFolderPath = "\\$Script:RemoteComputer\c`$\Temp\"
# Vérifier si le dossier de destination existe, sinon le créer
if (-not (Test-Path $RemoteFolderPath -PathType Container)) {
New-Item -Path $RemoteFolderPath -ItemType Directory | Out-Null
Write-Host "Le dossier $RemoteFolderPath a été créé."
} else {
Write-Host "Le dossier $RemoteFolderPath existe déjà."
}
# Copie du fichier à l'emplacement du poste distant
Copy-Item -Path $FilePath -Destination $RemoteFolderPath
# Suppression du site dans les TrustedHosts de WinRM
$listeTrustedHosts = (Get-Item WSMan:\localhost\Client\TrustedHosts).Value
$listeMiseAJour = $listeTrustedHosts -replace "$Script:RemoteComputer,", "" -replace ",$Script:RemoteComputer", "" -replace "$Script:RemoteComputer", ""
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $listeMiseAJour -ForceSet-Item : WinRM ne peut pas traiter la demande de configuration. Le modèle de nom d’hôte n’est pas valide: «» Les modèles de noms d’hôte doivent contenir un ou plusieurs modèles. Un modèle
ne peut contenir qu’un seul caractère générique («*»). Le modèle spécial «<local>» peut être utilisé pour indiquer tous les noms d’hôtes ne comportant pas un «.». Pour approuver tous les
hôtes, utilisez «*» comme seul modèle.
Au caractère Ligne:107 : 13
+ Set-Item WSMan:\localhost\Client\TrustedHosts -Value $new ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: ((: ) [Set-Item], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.SetItemCommand
New-Item : Le chemin d'accès n'a pas une forme conforme.
Au caractère Ligne:119 : 5
+ New-Item -Path $RemoteFolderPath -ItemType Directory | Out-Null
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (\\\c$\Temp\:String) [New-Item], ArgumentException
+ FullyQualifiedErrorId : CreateDirectoryArgumentError,Microsoft.PowerShell.Commands.NewItemCommand
Le dossier \\\c$\Temp\ a été créé.
Copy-Item : Impossible de lier l'argument au paramètre « Path », car il s'agit d'une chaîne vide.
Au caractère Ligne:126 : 17
+ Copy-Item -Path $FilePath -Destination $RemoteFolderPath
+ ~~~~~~~~~
+ CategoryInfo : InvalidData : ((: ) [Copy-Item], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAllowed,Microsoft.PowerShell.Commands.CopyItemCommand
Dernière édition: il y a 1 an 9 mois par Matthieu.
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 144
- Remerciements reçus 22
il y a 1 an 9 mois #33959
par Fabien
Réponse de Fabien sur le sujet Rendre des champs obligatoires
Bonjour Matthieu,
Pour rendre obligation un texte dans une Textbox, tu peux dire que tant que les deux textbox sont vides, tu ne pourras pas cliquer sur le bouton.
Pour faire ça, il faut ajouter ça à ton script :
Fabien
Pour rendre obligation un texte dans une Textbox, tu peux dire que tant que les deux textbox sont vides, tu ne pourras pas cliquer sur le bouton.
Pour faire ça, il faut ajouter ça à ton script :
#Désactivation du bouton
$buttonOK.Enabled = $False
#Action au changement de Texte
$textboxMachineName.add_TextChanged({
#Si les deux Textbox sont vides, ne pas activer le bouton OK, sinon l'activer
If($textboxMachineName.Text -eq '' -or $textboxFilePath.Text -eq '' ){
$buttonOK.Enabled = $False
}else{
$buttonOK.Enabled = $true
}
})
#Action au changement de Texte
$textboxFilePath.add_TextChanged({
#Si les deux Textbox sont vides, ne pas activer le bouton OK, sinon l'activer
If($textboxFilePath.Text -eq '' -or $textboxMachineName.Text -eq ''){
$buttonOK.Enabled = $False
}else{
$buttonOK.Enabled = $true
}
})
Fabien
Les utilisateur(s) suivant ont remercié: Matthieu
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.082 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Rendre des champs obligatoires