Итак, я создал инструмент powershell с использованием форм .... и он работает ... нет ничего плохого в коде ниже, за исключением того, что он не будет работать в Powershell 3. Это должно быть 4 .. и я не могу найти ничего об этом, что характерно для 4.0.Код, кажется, требует Powershell 4, однако не может понять, почему
Я просмотрел все страницы Technet для командлетов я использую, и все они имеют те же функции, перечисленные на 3 и 4.
Любые идеи?
основная функция это ...
Очищает 4 текстов коробки.
см. Этот флажок, если только один элемент отмечен, будет прочитайте в данных в этом файле и ищите слова, начинающиеся с #.
- Если он найдет совпадение больше 4 в длину ... Я принимаю единственную переменную, найденную, так как все те, которые у нас будут, будут содержать более 4 букв. Я сделал это, потому что, если найден только один, .count не будет работать. Но если встречается 4 совпадения, длина .length будет 4 .. такая же, как если бы длина одного элемента была 4. Если длина 4 или меньше, я обрабатываю как 4 или менее индивидуальную переменную.
- я теперь передавать их в текст и AccessibleName полей на форме
, то в любом случае .. Я обновляю строку состояния.
Ничего особенного.
$btn_LoadOptions = New-Object System.Windows.Forms.Button
$btn_LoadOptions.Font = New-Object System.Drawing.Font("Consolas", 8.25)
$btn_LoadOptions.Location = New-Object System.Drawing.Point(156, 184)
$btn_LoadOptions.Size = New-Object System.Drawing.Size(168, 23)
$btn_LoadOptions.TabIndex = 11
$btn_LoadOptions.Text = "Load Options"
$btn_LoadOptions.UseVisualStyleBackColor = $true
$btn_LoadOptions.add_Click({btn_LoadOptions_Click($btn_LoadOptions)})
function btn_LoadOptions_Click($object)
{
clean-messageboxes
if ($cbl_DefaultMessageChoices.CheckedItems.Count -eq 1)
{
$regex = [regex]'(#\w+)'
$found = Select-String -Pattern $regex -path $messagechoice -AllMatches | % { $_.Matches } | % { $_.Value }
if ($found.Length -gt 4)
{
$tb_MessageOption1.Text = $found
$tb_MessageOption1.AccessibleName = $found
}
else
{
$tb_MessageOption1.Text = $found[0]
$tb_MessageOption1.AccessibleName = $found[0]
$tb_MessageOption2.Text = $found[1]
$tb_MessageOption2.AccessibleName = $found[1]
$tb_MessageOption3.Text = $found[2]
$tb_MessageOption3.AccessibleName = $found[2]
$tb_MessageOption4.Text = $found[3]
$tb_MessageOption4.AccessibleName = $found[3]
}
$sb_TOC_PowerTools.Text = "Message Options Loaded"
}
else
{
$sb_TOC_PowerTools.Text = "No message choosen"
}
}
function clean-messageboxes
{
$tb_MessageOption1.Text = ""
$tb_MessageOption2.Text = ""
$tb_MessageOption3.Text = ""
$tb_MessageOption4.Text = ""
}
и да, я знаю, что я мог бы использовать более короткий код в else {} –
Не могли бы вы немного рассказать о «не сработаете»? Это ведет себя по-другому? Это порождает ошибки? –
поэтому ... когда я нажимаю кнопку на форме .. если у вас установлена powershell 3 .. ничего не происходит .. если у вас установлено 4. Файл читается, а опции с 1 по 4 из них загружаются в ящиков нет проблем. –