2009-09-30 8 views
0

Ceci est probablement un peu tendu et je ne suis pas sûr que ce soit possible du tout. Mais fondamentalement, j'essaye de créer une petite application qui contient beaucoup de code de PowerShell que je veux courir dans une affaire facile.VB.NET - utiliser le fichier texte comme source pour les menus et les zones de texte

J'ai réussi à tout créer moi-même et ça marche. Mais tout le code PowerShell est codé en dur, ce qui me désavantage énormément. Ce que je pensais était de créer une sorte de structure dynamique où je peux lire quelques fichiers texte (possible un grand nombre de fichiers texte) et les utiliser comme source à la fois pour les comboboxes et le richtextbox qui fournit le Chaîne utilisée pour s'exécuter dans PowerShell.

Je pensais quelque chose comme ceci:

Combobox - "Choisissez cmdlet" - Utilisez "menucode.txt" comme source RichTextbox - Utilisation "code.txt" comme source

Mais, la chose est Les extraits Powershell nécessitent quelques arguments pour qu'ils fonctionnent. J'ai donc quelques comboboxes et quelques textboxes qui fournissent en entrée pour ces arguments. Et ceci est fait manuellement comme c'est le cas maintenant. Donc, réécrire cette petite application devrait également rechercher dans le fichier texte pour certains mots-clés et avoir les comboboxes et les boîtes de texte pour remplacer ces mots-clés. Et je ne suis pas sûr de savoir comment faire ça.

Alors, cela nécessiterait-il beaucoup de fichiers texte? Ou pourrais-je utiliser un fichier texte et séparer chaque fragment de la cmdlet PowerShell avec quelque chose? Comme une sorte d'en-tête?


En ce moment, j'ai ce code au eventhandler (ComboBox_SelectedIndexChanged)

 If ComboBoxFunksjon.Text = "Set attribute" Then 
     TxtBoxUsername.Visible = True 

    End If 

    If chkBoxTextfile.Checked = True Then 
     If txtboxBrowse.Text = "" Then 
      MsgBox("You haven't choses a textfile as input for usernames") 
     End If 
     LabelAttribute.Visible = True 
     LabelUsername.Visible = False 
     ComboBoxAttribute.Visible = True 
     TxtBoxUsername.Visible = False 

     txtBoxCode.Text = "$users = Get-Content " & txtboxBrowse.Text & vbCrLf & "foreach ($a in $users)" & vbCrLf & "{" & vbCrLf & "Set-QADUser -Identity $a -ObjectAttributes @{" & ComboBoxAttribute.SelectedItem & "='" & TxtBoxValue.Text & "'}" & vbCrLf & "}" 

     If ComboBoxAttribute.SelectedItem = "Outlook WebAccess" Then 
      TxtBoxValue.Visible = False 
      CheckBoxValue.Visible = True 
      CheckBoxValue.Text = "OWA Enabled?" 
      txtBoxCode.Text = "$users = Get-Content " & txtboxBrowse.Text & vbCrLf & "foreach ($a in $users)" & vbCrLf & "{" & vbCrLf & "Set-CASMailbox -Identity $a -OWAEnabled" & " " & "$" & CheckBoxValue.Checked & " '}" & vbCrLf & "}" 
     End If 

     If ComboBoxAttribute.SelectedItem = "MobileSync" Then 
      TxtBoxValue.Visible = False 
      CheckBoxValue.Visible = True 
      CheckBoxValue.Text = "MobileSync Enabled?" 

      Dim value 
      If CheckBoxValue.Checked = True Then 
       value = "0" 
      Else 
       value = "7" 
      End If 

      txtBoxCode.Text = "$users = Get-Content " & txtboxBrowse.Text & vbCrLf & "foreach ($a in $users)" & vbCrLf & "{" & vbCrLf & "Set-QADUser -Identity $a -ObjectAttributes @{msExchOmaAdminWirelessEnable='" & value & " '}" & vbCrLf & "}" 
     End If 

    Else 
     LabelAttribute.Visible = True 
     LabelUsername.Visible = True 
     ComboBoxAttribute.Visible = True 

     txtBoxCode.Text = "Set-QADUser -Identity " & TxtBoxUsername.Text & " -ObjectAttributes @{" & ComboBoxAttribute.SelectedItem & "='" & TxtBoxValue.Text & " '}" 

     If ComboBoxAttribute.SelectedItem = "Outlook WebAccess" Then 
      TxtBoxValue.Visible = False 
      CheckBoxValue.Visible = True 
      CheckBoxValue.Text = "OWA Enabled?" 
      txtBoxCode.Text = "Set-CASMailbox " & TxtBoxUsername.Text & " -OWAEnabled " & "$" & CheckBoxValue.Checked 
     End If 

     If ComboBoxAttribute.SelectedItem = "MobileSync" Then 
      TxtBoxValue.Visible = False 
      CheckBoxValue.Visible = True 
      CheckBoxValue.Text = "MobileSync Enabled?" 

      Dim value 
      If CheckBoxValue.Checked = True Then 
       value = "0" 
      Else 
       value = "7" 
      End If 

      txtBoxCode.Text = "Set-QADUser " & TxtBoxUsername.Text & " -ObjectAttributes @{msExchOmaAdminWirelessEnable='" & value & "'}" 
     End If 

    End If 

Maintenant, cet extrait me permet ci-dessus soit utiliser un fichier texte comme une source pour chaque nom d'utilisateur utilisé dans la extrait de PowerShell. Juste pour que tu saches :) Et je sais, c'est probablement codé aussi bêtement que possible. Mais, il fonctionne! :)

Répondre

0

Il sera probablement assez horrible à déboguer quand vous avez été absent pendant un an et essayons de comprendre comment il se bloque ensemble, mais si vous le faites, je suggère que cela C'est peut-être un bon moment pour utiliser XML, car vous pouvez facilement créer une structure agréable pour les fichiers, ce qui sera assez facile à comprendre.

<commands> 
    <command> 
     <name>Cmd1</name> 
     <buttonText>NiceName</buttonText> 
     <parameters> 
      <parameter>textBox1</parameter> 
      <parameter>textBox2</parameter> 
      <parameter>comboBox1</parameter> 
     </parameters> 
     <code>your code here</code> 
    </command> 
    <command> 
    ... 
    </command> 
</commands> 

Vous devrez faire attention si votre code de script contient des caractères qui peuvent interférer avec le XML.

Questions connexes