所以我使用表单构建了一个powershell工具....它可以工作......下面的代码没有任何问题,除了它在Powershell 3中不起作用。它必须是4 ..我可以找不到任何特定于4.0的内容。
我查看了我正在使用的cmdlet的所有technet页面,它们都具有针对3和4列出的相同功能。
有什么想法吗?
基本功能就是这个......
清除4个文本框。
它查看了一个复选框列表,只提供了一个项目 读入该文件中的数据并查找以#。
然后在任何一种情况下..我更新状态栏。
没什么特别的。
$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 = ""
}
答案 0 :(得分:4)
您在评论中提到您分配$messagechoice
变量,如下所示:
$global:messagechoice = $pgmessagedefaults_path + "\" + ($cbl_DefaultMessageChoices.CheckedItems.ForEach({$f = ($_ + ".txt");return $f}))
.ForEach({})
扩展方法为a PowerShell 4.0 feature,这解释了为什么它在PowerShell 3.0中不起作用
改为使用ForEach-Object
cmdlet:
$global:messagechoice = $pgmessagedefaults_path + "\" + ($cbl_DefaultMessageChoices.CheckedItems |ForEach-Object {$_ + ".txt"})