это, вероятно, немного напряжено, и я не уверен, что это вообще возможно. Но в основном, я пытаюсь создать небольшое приложение, которое содержит много кода PowerShell, который я хочу запустить в простой ситуации.VB.NET - использование текстового файла как источника для меню и текстовых полей
Мне удалось создать все самостоятельно, и оно действительно работает. Но весь код PowerShell жестко закодирован вручную, и это дает мне огромный недостаток.
Что я думал о создании динамической структуры, где я могу прочитать несколько текстовых файлов (возможно, много текстовых файлов) и использовать их в качестве источника как для списков combobox, так и для richtextbox, которые провоцируют строка, используемая для запуска в PowerShell.
Я думал, что-то вроде этого:
Комбобокс - "Выберите командлет" - Использование "menucode.txt" в качестве источника RichTextBox - Использование "code.txt" в качестве источника
Но, дело в том, , Фрагментам Powershell нужно несколько аргументов, чтобы они могли работать. Итак, у меня есть несколько comboboxes и несколько текстовых полей, которые предоставляют входные данные для этих аргументов. И это делается вручную, как сейчас. Поэтому переписывание этого небольшого приложения должно также искать текстовый файл для некоторых ключевых слов и иметь сводки и текстовые поля для замены этих ключевых слов. И я не знаю, как это сделать.
Итак, будет ли это требовать много текстовых файлов? Или я могу использовать один текстовый файл и отдельно отделять фрагменты командлета PowerShell? Как какой-то заголовок?
Прямо сейчас, у меня есть этот код на 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. Просто чтобы вы знали :) И я знаю, это, вероятно, закодировано так же глупо, как и получается. Но это работает! :)