Meilleur auteur de réponses
Faire un select-string à partir du texte contenu dans un textbox

Question
-
Malgré beaucoup de lecture, sur beaucoup de forums, je ne trouve toujours pas la solution a mon problème. Je tente d'extraire une section d'un long texte contenu dans un textbox. Mon code de base ressemble à ceci:
Select-String -pattern "SECTION 4" -inputobject $test.text
Peu importe que je fasse un .tostring de ma variable $test, que je la pipe dans un out-string, elle ne semble jamais reconnu comme tu texte traitable par select-string. La réponse a mon select-string est toujours mon texte en entiers plutôt que la ligne contenant le texte recherché. Lorsque je met le contenu de $test dans un fichier texte, je réussi a faire le traitement sans problème. Qu'est-ce que je ne comprends pas et comment arriver a mes fins sans devoir créer des fichiers texte temporaire?
Réponses
Toutes les réponses
-
-
-
-
Voici nom textbox:
#textbox des ci-usagers $txbciusager = New-Object System.Windows.Forms.TextBox $txbciusager.Name = "txbciusager" $txbciusager.Location = New-Object System.Drawing.Size(15,60) $txbciusager.Size = New-Object System.Drawing.Size(425,250) $txbciusager.text = "" $txbciUsager.multiline = $true $frmMsgbox.Controls.Add($txbciusager)
-
J'ai déjà eu un comportement similaire avec du Windows.Forms en Powershell avec une autre commande.
Je ne retombe plus sur l'exemple, mais je pense que c'était dans un ForEach ... Bref,
La variable $txtciusager.text contient une autre variable ou un text brut ?
Le fait que multiline soit à $true me parait bon. Est-ce que faire un write-host de $txtciusager.text affiche bien le tout sur plusieurs ligne ? Si le retour est est sur un single line, voilà le problème pour Select-String.
Je creuserai aussi du coté de :
CanSelectOu bien du coté du TextBoxBase.Multiline, peut-être réagira t'il différemment. :-o
https://msdn.microsoft.com/fr-fr/library/system.windows.forms.textboxbase.multiline(v=vs.110).aspx
-
-
-
Ce mieux que vous puissiez joindre votre script au commentaire. pour qu'on vous aide.
Merci,a+
S'il vous plaît n'oubliez pas de =Marquer comme réponse= les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. Héritier KANDOLO. http://www.rootandadmin.com/
-
Voici la logique: En appuyant sur le bouton ok, le texte devrais être remplacé par le résultat de select-string (en espérant ne pas avoir fait de faute de codage en modifiant mon original)
$test = " Installation/accès aux logiciel Numéro de demande: blablabla État: Travail en cours Soumises: 22 novembre 2016 - 13:56:35 État de l'approbation: blablabla Date approuvée: 23 novembre 2016 - 17:00:16 SECTION 1 - PROFIL DU DEMANDEUR ID utilisateur: AAA000 Nom: blablabla, blablabla- blablabla No de téléphone: blablabla Région: QUÉBEC SECTION 2 - PROFIL DE LA PERSONNE AUTORISÉE État de l'approbation: Approuvée ID utilisateur: blablabla Nom: blablabla, blablabla No de téléphone: blablabla SECTION 3 - DÉTAILS SUR LE LOGICIEL Date requise: mer. 23 nov. 2016 Nom du logiciel: blablabla Preuve d'achat: SECTION 4 - CLIENT(S) TOUCHÉ(S) 1. blablabla, blablabla- blablabla ID utilisateur: AAA111 Nom: blablabla, blablabla-MARIE Code du site: blablabla Étage: 1 Pièce: A14 2. blablabla, blablabla ID utilisateur: AAA111 SECTION 5 - AUTRES COMMENTAIRES Bonjour, Merci de voir à ce que les employés mentionnés dans cette demande obtienne la mise à jour étant donné que nous aurons à travailler sur des fichiers communs suite à la restructuration du CFSH et nous devons absolument travailler sur la même version afin d'éviter toutes problématiques. Pour toutes questions, n'hésitez pas à me contacter. Bonne journée! " function global:MsgboxCloneRights { $frmMsgbox = New-Object System.Windows.Forms.Form $InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState $frmMsgbox.Text = $titre $frmMsgbox.Name = "frmMsgbox" $frmMsgbox.DataBindings.DefaultDataSourceUpdateMode = 0 $frmMsgbox.ClientSize = New-Object System.Drawing.Size(450,350) $frmMsgbox.StartPosition = "WindowsDefaultLocation" $frmMsgbox.AutoSizeMode = "GrowAndShrink" $frmMsgbox.Topmost = $True $frmMsgbox.KeyPreview = $True $handler_btnAnnuler = { $frmMsgbox.close() } $handler_btnOK = { #Extraction du journal $temp = ($txbciusager.text | Select-String -pattern "SECTION 4") $txbciusager.text = $temp } #Label question $lblQuestion = New-Object System.Windows.Forms.label $lblQuestion.Name = "lblQuestion" $lblQuestion.Text = "Veuillez inscrire les ci-usagers, séparés par des points-virgules, des utilisateurs auxquels vous désirez effectuer la même modification de droits" $lblQuestion.Location = New-Object System.Drawing.Size(15,25) $lblQuestion.Size = New-Object System.Drawing.Size(425,25) $frmMsgbox.Controls.Add($lblQuestion) #textbox des ci-usagers $txbciusager = New-Object System.Windows.Forms.TextBox $txbciusager.Name = "txbciusager" $txbciusager.Location = New-Object System.Drawing.Size(15,60) $txbciusager.Size = New-Object System.Drawing.Size(425,250) $txbciusager.text = $test $txbciUsager.multiline = $true $frmMsgbox.Controls.Add($txbciusager) #Bouton OK $btnOK = New-Object System.Windows.Forms.Button $btnOK.TabIndex = 3 $btnOK.Name = "btnOk" $btnOK.Size = New-Object System.Drawing.Size(100,25) $btnOK.UseVisualStyleBackColor = $True $btnOK.Location = New-Object System.Drawing.Size(340,315) $btnOK.DataBindings.DefaultDataSourceUpdateMode = 0 $btnOK.Text = "Ok" $btnOK.enabled = $true $btnOK.add_Click($handler_btnOK) $frmMsgbox.Controls.Add($btnOK) #Bouton Annuler $btnAnnuler = New-Object System.Windows.Forms.Button $btnAnnuler.TabIndex = 2 $btnAnnuler.Name = "btnAnnuler" $btnAnnuler.Size = New-Object System.Drawing.Size(100,25) $btnAnnuler.UseVisualStyleBackColor = $True $btnAnnuler.Location = New-Object System.Drawing.Size(230,315) $btnAnnuler.DataBindings.DefaultDataSourceUpdateMode = 0 $btnAnnuler.Text = "Annuler" $btnAnnuler.enabled = $true $btnAnnuler.add_Click($handler_btnAnnuler) $frmMsgbox.Controls.Add($btnAnnuler) $InitialFormWindowState = $frmMsgbox.WindowState #Init the OnLoad event to correct the initial state of the form $frmMsgbox.add_Load($OnLoadForm_StateCorrection) #Show the Form $frmMsgbox.ShowDialog()| Out-Null } MsgboxCloneRights
-
-
-