Question Besoin d'aide pour rendre dynamique mon formulaire

Plus d'informations
il y a 14 ans 7 mois #9962 par Julien
Bonjour,

Cela fait à peine deux mois que je connais le langage PowerShell et en grande partie grâce à ce site j'ai pu apprendre à maitriser certaines subtilités.

Cependant je mène (seul) un projet assez intéressant, pour l'entreprise qui m'emploie, de script Powershell qui a pour but de générer un script (MS-DOS) de sauvegarde planifiée pour Windows Server 2008 R2. Celui-ci doit demander à l'utilisateur via des formulaires (IHM en Windows Forms) des informations (comme des paramètres de commandes WBadmin).

Le problème, dans un premier temps, se situe dans le côté dynamique je souhaite intégrer à mon interface. Je ne trouve pas le moyen de rendre ma \"TextBox récapitulative\" automatiquement ou par un bouton \"alimentée\" par le contenu entré dans les autres TextBox (et la CheckedListBox).

Pour la clarté, voici un exemple :
[code:1]
#Définition de la TextBox1 ($tb1)
#Définition de la TextBox2 ($tb2)
#Définition de la CheckedListBox3 ($clb3)
#Définition de la TextBox4 ($TextBox4)

$TextBox4.Text = \"wbadmin start backup -include:\" + $tb1 + \" -backuptarget:\" + $tb2 + $clb3

# OU

$ButtonRefresh.add_Click({$TextBox4.Text = \"wbadmin start backup -include:\" + $tb1 + \" -backuptarget:\" + $tb2 + $clb3})

# J'ai même essayé (et c'est le but je pense) en créant une fonction parce que ce \"refresh\" sera utilisé à plusieurs moments, mais c'est pareil ou pire...
[/code:1]

Je vous remercie grandement par avance pour m'aider à enfin avancer dans mon projet et je suis à votre disposition pour répondre à toutes vos interrogations.

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

Plus d'informations
il y a 14 ans 7 mois #9966 par Laurent Dardenne
Personne écrit:

Le problème, dans un premier temps, se situe dans le côté dynamique je souhaite intégrer à mon interface. Je ne trouve pas le moyen de rendre ma \"TextBox récapitulative\" automatiquement ou par un bouton \"alimentée\" par le contenu entré dans les autres TextBox (et la CheckedListBox).

Si j'ai bien compris, tu veux construire une ligne d'appel à partir des champs de ton IHM.
Par contre, tu souhaites que cette construction se fasse au fur et à mesure de la saisie ou une fois que l'utilisateur clique sur \"OK\" ?
Quand tu cites $tb1 , tu références implicitement $tb1.Text ?
Sais-tu coder ce traitement sans IHM ? Si oui, propose-le nous.

Tutoriels PowerShell

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

Plus d'informations
il y a 14 ans 7 mois #9968 par Julien
D'abord, merci beaucoup d'avoir répondu si vite.

En fait, j'ai voulu simplifier au maximum une explication et un code relativement longs, et j'ai commis une erreur. Effectivement, c'est l'objet TextBox avec le paramètre Text qui se cache derrière ma variable $tb1 de telle sorte que : $tb1 = $TextBox1.Text
La question (que je me pose aussi) est pourquoi ne pas avoir directement mis \"$TextBox1.Text\", mais je répondrais que depuis une semaine j'ai essayé tellement de choses que j'en suis arrivé à conserver quelques bizarreries... ^^

Sinon, tu as très bien compris, c'est une ligne qui peut ne pas être utilisée car tous les paramètres nécessaires à l'adaptation de la commande de sauvegarde sont demandés précédemment, mais comme Microsoft l'a fait dans certains outils d'administration de serveur, je souhaite faire une ligne qui affiche le résultat de tous ceci, pour la transparence et éventuellement la modification pour des besoins spécifiques d'un utilisateur expérimenté (un paramètre non proposé ou un caractère qui passe mal, qui sait...).

Aussi, dans l'idéal cette ligne tend à être implémentée par les informations renseignées ailleurs le plus automatiquement possible et en temps réel, mais s'il faut créer (comme je l'ai prévu) un bouton \"mettre à jour\" (le champ), cela ne posera aucun souci. Je passerais de préférence par une fonction pour coder ce \"refresh\" car j'hésite à rafraichir le champ au clic sur valider si l'utilisateur n'a pas mis à jour avant (ce qui implique que le champ sera vide si rien n'est automatique)...

Pour finir, je ne comprends pas ta dernière demande, si c'est le traitement WBADMIN, oui, si c'est le \"refresh\" je ne vois pas trop comment.
Dans le premier cas voici la commande (cf. technet.microsoft.com/fr-fr/library/cc742083%28WS.10%29.aspx ) :
[code:1]wbadmin start backup
[-backupTarget:{<BackupTargetLocation> | <TargetNetworkShare>}]
[-include:<VolumesToInclude>]
[-allCritical]
[-noVerify]
[-user:<UserName>]
[-password:<Password>]
[-noinheritAcl]
[-vssFull]
[-quiet][/code:1]

Merci encore de bien vouloir prendre le temps de me répondre, j'essayerai de me rendre aussi disponible que possible demain, malgré que je sois en intervention extérieure.

PS: J'accepterais, si tu me le demandes, de t'envoyer mon fichier de code, mais par Message Personnel.

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

Plus d'informations
il y a 14 ans 7 mois #9970 par Laurent Dardenne
Personne écrit:

D'abord, merci beaucoup d'avoir répondu si vite.

Ce n'est pas de la vitesse, juste de la disponibilité :-)
Personne écrit:

j'en suis arrivé à conserver quelques bizarreries... ^^

Bha, c'est du PowerShell.
Personne écrit:

mais s'il faut créer (comme je l'ai prévu) un bouton \"mettre à jour\" (le champ)

Pour une V1 c'est déjà bien.
Personne écrit:

Je passerais de préférence par une fonction pour coder ce \"refresh\"

Oublie le \"refresh\", pense \"Build\"
Personne écrit:

l'utilisateur n'a pas mis à jour avant (ce qui implique que le champ sera vide si rien n'est automatique)...

Ton IHM doit porter des régles de gestion sur les champs de saisie, car ce que tu souhaites faire ressemble un peu à du revamping , voir un wrapper de programme console.
Dans ce cas étudie ce script, Robocopy GUI .
Personne écrit:

Pour finir, je ne comprends pas ta dernière demande,si c'est le traitement WBADMIN, oui

Tu me proposes une liste de paramètres, pas du code les gérants.
Enfin peu importe, j'ai compris ce que tu veux faire. Ceci dit, tu dois creuser un minimum la syntaxe de ton utilitaire avant de commencer à coder.

C'est un projet intéressant en tout cas.
Personne écrit:

PS: J'accepterais, si tu me le demandes, de t'envoyer mon fichier de code, mais par Message Personnel.

Sur ce forum ce n'est pas possible. Et l'usage, en tout cas le mien, veut que chacun profite de l'échange, sinon cette pratique d'entraide ne s'appellerait pas un forum . Du coup, en passant, 'forum privé' est un oxymore...

Tutoriels PowerShell

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

Plus d'informations
il y a 14 ans 7 mois #9973 par Julien
Bonjour,

En espérant que tu sois disponible ce WE et/ou en début de semaine prochaine alors ^^
J'ai vraiment envie de mener à bien ce projet que je trouve très intéressant aussi, puis maintenant que je suis dessus (un mois et demi) l'entreprise l'attend...

Je me suis décidé à faire deux captures d'écran (pour la clarté de présentation et pas se retrouver avec des posts à rallonge), pour commencer une vue de l'interface :
img96.imageshack.us/img96/5396/scriptdesauvegardevuede.png
Et une vue du code de l'interface (quasiment tout le code métier de génération du script dans un fichier est prêt, mais pas implémenté) :
nsa28.casimages.com/img/2011/07/29/110729120636477985.png

J'ai aussi passé du temps hier soir et ce matin à lire et étudier ce que tu m'as proposé et ça m'a beaucoup intéressé, surtout les définitions de revamping et de wrapper (ou adaptateur ou patron de conception (design pattern) de type de structure). En outre, je n'ai presque \"rien\" compris au code du \"robocopy\" (ni à la description au dessus d'ailleurs, vu mon niveau d'anglais ! lol).

Merci encore à toi pour le temps que tu veux bien m'accorder.

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

Plus d'informations
il y a 14 ans 7 mois #9981 par Arnaud Petitjean
Bonjour,

Il aurait sympa de poster le code source au format texte plutôt qu'en image.

Cela aurait permis :
1. de pouvoir le tester
2. de t'aider à le débogguer
3. éventuellement de s'en servir

C'est ça l'esprit communautaire...

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

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