Arrays PowerShell插入阵列

Arrays PowerShell插入阵列,arrays,variables,powershell,Arrays,Variables,Powershell,我们正在创建一个大脚本,需要生成一些HTML代码。这一切都很好,我已经在数组$HTMLcode中收集了我需要的所有信息 我对数组/字符串操作仍然有点不在行,所以我想知道是否可以在数组HTMLcode中以文本错误开头的每一行上方插入一行文本 $HTMLcode=@() $HTMLcode += "ERROR: Problem 1<br>" $HTMLcode += "You did this wrong.. <br>" $HTMLcode += "ERROR Problem

我们正在创建一个大脚本,需要生成一些HTML代码。这一切都很好,我已经在数组
$HTMLcode
中收集了我需要的所有信息

我对数组/字符串操作仍然有点不在行,所以我想知道是否可以在数组
HTMLcode
中以文本错误开头的每一行上方插入一行文本

$HTMLcode=@()
$HTMLcode += "ERROR: Problem 1<br>"
$HTMLcode += "You did this wrong.. <br>"
$HTMLcode += "ERROR Problem 2<br>"
$HTMLcode += "Something happened here.. <br>"
$HTMLcode += "ERROR Porblem 3<br>"
$HTMLcode += "Did you try.. <br>"
$HTMLcode=@()
$HTMLcode+=“错误:问题1
” $HTMLcode+=“您做错了….
” $HTMLcode+=“错误问题2
” $HTMLcode+=“这里发生了一些事情….
” $HTMLcode+=“错误问题3
” $HTMLcode+=“您是否尝试过…”
预期结果将是:

$HTMLcode=@()
$HTMLcode += "--------------------------<br>"
$HTMLcode += "ERROR: Problem 1<br>"
$HTMLcode += "You did this wrong.. <br>"
$HTMLcode += "--------------------------<br>"
$HTMLcode += "ERROR Problem 2<br>"
$HTMLcode += "Something happened here.. <br>"
$HTMLcode += "--------------------------<br>"
$HTMLcode += "ERROR Porblem 3<br>"
$HTMLcode += "Did you try.. <br>"
$HTMLcode=@()
$HTMLcode+=“------------------------------------
” $HTMLcode+=“错误:问题1
” $HTMLcode+=“您做错了….
” $HTMLcode+=“------------------------------------
” $HTMLcode+=“错误问题2
” $HTMLcode+=“这里发生了一些事情….
” $HTMLcode+=“------------------------------------
” $HTMLcode+=“错误问题3
” $HTMLcode+=“您是否尝试过…”

感谢您的帮助。

除非您小心,否则如果管道中的操作(cmdlet)返回两个对象,它们将作为单独的对象放置在管道中

例如

返回

1 2 2 4 3 6 1. 2. 2. 4. 3. 6. 因此,您可以执行以下操作:

$updatedHtmlCode = $HTMLCode |
       Select-Object { if ($_ -clike 'ERROR*') { '--------------------------<br>' } $_ }
$updatedHtmlCode=$HTMLCode|
选择对象{if($\-clike'ERROR*'){'------------------------------------
'}$\}
另一种可能性:

$htmlcode = @()
$HTMLcode += "ERROR: Problem 1<br>"
$HTMLcode += "You did this wrong.. <br>"
$HTMLcode += "ERROR Problem 2<br>"
$HTMLcode += "Something happened here.. <br>"
$HTMLcode += "ERROR Porblem 3<br>"
$HTMLcode += "Did you try.. <br>"

$htmlcode  -replace '^(?=ERROR)',"--------------------------<br>`n"


--------------------------<br>
ERROR: Problem 1<br>
You did this wrong.. <br>
--------------------------<br>
ERROR Problem 2<br>
Something happened here.. <br>
--------------------------<br>
ERROR Porblem 3<br>
Did you try.. <br>
$htmlcode=@()
$HTMLcode+=“错误:问题1
” $HTMLcode+=“您做错了….
” $HTMLcode+=“错误问题2
” $HTMLcode+=“这里发生了一些事情….
” $HTMLcode+=“错误问题3
” $HTMLcode+=“您是否尝试过…”
“ $htmlcode-替换“^(?=ERROR)”,------------------------------------
`n --------------------------
错误:问题1
你做错了
--------------------------
错误问题2
这里发生了一些事
--------------------------
错误问题3
你试过了吗
这不会向数组中添加任何额外的元素,它只是用一个新字符串替换错误行,该字符串包含在原始文本之前嵌入新行的额外文本


对于html,完成后可能会通过Out字符串发送,最终结果应该与在数组中插入新行相同。

最终找到了以下答案:

$Array = @"
computer1
computer2
computer2
"@ -split "`n" | % { $_.trim() }
诀窍是劈开和修剪。这使得它在管道中工作。 资料来源:

谢谢你的帮助,Richard,但这并没有真正达到预期的效果。它制作了6个不同的数组,它们之间有一个逗号分隔符。。这使得它在HTML中的使用变得不干净。@DarkLite1接下来会发生更多的事情。刚刚测试了
“foo”、“bar”、“bax”|%{if($\ueq'bar'){“xyzy”}${uzzy}}{write host($i++);$|}
,计数清楚地显示最后一次
选择对象
执行了4次。我现在正在尝试另一种方法,通过将数组转换为一个列表
$list=New object System.Collections.ArrayList,它可能更可读(,$HTMLcode)
然后插入带有
$list的值。插入(2,“文本”)
。现在我只需要找出如何为所有以错误开头的文本找到正确的ID号
Int StartIndex
值,因为它不接受文本字符串。嗨,Richard,你的方法确实是最好的方法。谢谢你的帮助,我将你的答案标记为已解决。太棒了!这也很有效,谢谢你提供
-替换
:)
$Array = @"
computer1
computer2
computer2
"@ -split "`n" | % { $_.trim() }