VB.NET - 使用textfile作为菜单和文本框的源

时间:2009-09-30 06:30:57

标签: vb.net text textbox

这可能有点紧张,我不确定这是否可行。 但基本上,我正在尝试创建一个包含大量PowerShell代码的小应用程序,我希望在这个代码中轻松运行。

我自己创造了一切,但它确实有效。但是所有PowerShell代码都是手动硬编码的,这给我带来了巨大的劣势。

我在想的是创建某种动态结构,我可以读取几个文本文件(可能有大量的文本文件)并将它们用作组合框和richtextbox的源代码,它们作为字符串提供曾经在PowerShell中运行。

我在想这样的事情:

Combobox - “选择cmdlet” - 使用“menucode.txt”作为来源 Richtextbox - 使用“code.txt”作为源

但事实是,Powershell片段需要一些参数才能使它们发挥作用。 所以我有几个组合框和一些文本框,它们为这些参数提供输入。这是手动完成的,就像现在一样。因此,重写这个小应用程序还应该在文本文件中搜索一些关键字,并使用组合框和文本框来替换这些关键字。我不知道该怎么做。

那么,这需要大量的文本文件吗?或者我可以使用一个文本文件并将每个PowerShell cmdlet片段与某些内容分开吗?像某种标题?


现在,我在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

现在,上面的这个代码片段允许我使用文本文件作为powershell代码段中使用的每个用户名的来源。只是你知道:)我知道,这可能是愚蠢的编码。但它确实有效! :)

1 个答案:

答案 0 :(得分:0)

当你离开它一年并试图弄清楚它是如何挂在一起时调试可能会相当糟糕,但如果你这样做我会建议这可能是一个使用XML的好时机,因为您可以轻松地创建一个很容易理解的文件结构。

<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>

如果你的脚本代码包含任何可能干扰xml的字符,你必须要小心。