當該陣列缺少分隔符時,我試圖將非結構化陣列決議為列。陣列在輸入到文本檔案后從資料操作中看起來的方式如下:
DC1
49600 Reachable
49601 Reachable
49602 Reachable
49603 Reachable
49604 Reachable
49605 Reachable
49606 Reachable
49607 Reachable
DC2
49600 Reachable
49601 Reachable
49602 Reachable
49603 Reachable
49604 Reachable
49605 Reachable
49606 Reachable
49607 Reachable
HTML 電子郵件中的資料陣列如下所示:
截圖 #1:

我需要它是兩列,就像這樣:
截圖 #2:

我嘗試了一些事情,首先,將陣列分配給變數 $Result。然后我將其輸出到一個文本檔案,然后在 HTML 電子郵件的正文中通過電子郵件發送 $Result。最終發生的是電子郵件正文看起來像螢屏截圖 #1 中的文本塊。然后我嘗試了各種組合的各種“加入”陳述句,結果更糟。在敲打我的頭幾個小時后,我決定在這里發帖。
編輯:更改了問題的主題行以及我提到字串的問題部分 - 我們在這里談論的是陣列,而不是字串。(感謝圣地亞哥)
uj5u.com熱心網友回復:
代碼非常復雜,但應該可以滿足您的需求。如您所見,它應該適用于多個DCxx.
注:在下面的字串@'...'@是那里只是作為一個例子來測驗代碼,如果這是從檔案中讀取時,一定要使用-Raw的開關Get-Content。
$result = [ordered]@{}
@'
DC1
49600 Reachable
49601 Reachable
DC2
49602 Reachable
49603 Reachable
49604 Reachable
49605 Reachable
49606 Reachable
49607 Reachable
DC3
49600 Reachable
49601 Reachable
49602 Reachable
DC4
49603 Reachable
49604 Reachable
49605 Reachable
49606 Reachable
49607 Reachable
'@ -split '\b(?=DC\d )\b' -ne '' | ForEach-Object {
$parse = ($_ -split '\r?\n' -ne '').ForEach('Trim')
$header = $parse[0]
$data = $parse[1..($parse.Count - 1)]
$result.Add($header, $data)
}
$maxIter = $result.Keys.ForEach({$result[$_].Count}) | Measure-Object -Maximum
$toHTML = for($i = 0; $i -lt $maxIter.Maximum; $i )
{
$out = [ordered]@{}
foreach($key in $result.Keys)
{
$out.Add($key, $result[$key][$i])
}
[pscustomobject]$out
}
$style = @'
<style>
* {
font-family: Calibri, sans-serif;
padding: 0px;
margin: 0px;
text-align: left;
}
table {
border-collapse: collapse;
width: 50%;
font-size: 13px;
margin: 10px;
}
th {
background-color: #708090;
color: white;
font-size: 16px;
font-weight: bold;
padding: 5px 5px 5px 15px;
text-align: left
}
td {
padding: 5px 5px 5px 15px;
}
tr:nth-child(odd) {
background-color: #f2f2f2;
}
</style>
'@
$toHTML | ConvertTo-Html -PreContent $style | Out-File ./test.html
Invoke-Item ./test.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/370386.html
標籤:电源外壳
上一篇:等效于`ls-t|頭`
