对于所有字段和值,以"LOAD";以Weight_KGS结尾,我想创建一个html表(2列:描述和值/内容(。但我不想硬连接22行代码(x2(
我的数组如下:(下面只有1行(
PS C:WINDOWSsystem32> $Emails
-----------------------------------------
ID : Xtest
Subject : LOAD 85465494557 - TO 37654004
LOAD : 8594557
TransportOrder : 37941004
DeliveryNote :
BusinessCase : Full
ServiceProvider : Me
PickupCountry : FR
Pickup_ID : 2546s
PickupName : YoKo
PickupStreet : Mani 12
PickupZipCode : 25320
PickupCity : Frankfurt
DeliveryName : ManiMani
DeliveryDock : LeftGreen
ReferenceNumber :
ServiceLevel : Prio
TransportMode : FTL
PickupDate : 7/8/2020 00:00:00
PickupTime : 30/12/2020 00:00:00
DeliveryDate : 7/8/2020 00:00:00
DeliveryTime : 30/12/2020 14:34:00
LoadingMeter_mtr : 11.5
Weight_kgs : 2560
Comment_TO : I am new to Powershell
Comment_LOAD : PowershellTest
--------------第一条记录的结束数据
对于所有字段和值;LOAD";以Weight_KGS结尾,我想创建一个html表(2列:描述和值/内容(。
我可以对字段和值进行22次硬编码:例如;LOAD"$电子邮件。负载但这似乎很愚蠢。我正在寻找一个片段,例如看起来像这样:
$startingfield=3
Do while $startingfield<25
$FieldNM = $emails.FieldName[$startingfield]
$FieldVAL = $emails.FieldValue[$startingfield]
Write-output $emails.fieldNM
Write-output $emails.fieldVAL
$startingfield=$startingfield+1
Loop
我很抱歉,因为我刚开始写电源壳脚本和写问题(我希望有人能帮助我,并为我指明正确的方向,因为我已经阅读和搜索了几个小时,但我可以找到合适的搜索词,以同样无用的视频结束(
非常感谢您花时间阅读迄今为止的
以下是解析指定数据的一种方法。它将把数据视为单个字符串,并从LOAD一直匹配到Comment_TO之前。然后,我们通过用等号替换分号来准备数据,并让ConvertFrom-StringData
发挥它的魔力。
对于第一个测试,我们将把数据存储在here字符串中。
$data = @'
-----------------------------------------
ID : Xtest
Subject : LOAD 85465494557 - TO 37654004
LOAD : 8594557
TransportOrder : 37941004
DeliveryNote :
BusinessCase : Full
ServiceProvider : Me
PickupCountry : FR
Pickup_ID : 2546s
PickupName : YoKo
PickupStreet : Mani 12
PickupZipCode : 25320
PickupCity : Frankfurt
DeliveryName : ManiMani
DeliveryDock : LeftGreen
ReferenceNumber :
ServiceLevel : Prio
TransportMode : FTL
PickupDate : 7/8/2020 00:00:00
PickupTime : 30/12/2020 00:00:00
DeliveryDate : 7/8/2020 00:00:00
DeliveryTime : 30/12/2020 14:34:00
LoadingMeter_mtr : 11.5
Weight_kgs : 2560
Comment_TO : I am new to Powershell
Comment_LOAD : PowershellTest
'@
现在让我们处理
$data -match '(?s)^LOAD.*(?=Comment_TO)' | foreach {
$ht = [ordered]@{}
$Matches.0 -split [Environment]::NewLine |
Foreach-Object{$_ -Replace "(?<=D):","=" |
ConvertFrom-StringData | Foreach-Object{$ht += $_}}
[PSCustomObject]$ht
} -OutVariable results
输出
LOAD : 8594557
TransportOrder : 37941004
DeliveryNote :
BusinessCase : Full
ServiceProvider : Me
PickupCountry : FR
Pickup_ID : 2546s
PickupName : YoKo
PickupStreet : Mani 12
PickupZipCode : 25320
PickupCity : Frankfurt
DeliveryName : ManiMani
DeliveryDock : LeftGreen
ReferenceNumber :
ServiceLevel : Prio
TransportMode : FTL
PickupDate : 7/8/2020 00:00:00
PickupTime : 30/12/2020 00:00:00
DeliveryDate : 7/8/2020 00:00:00
DeliveryTime : 30/12/2020 14:34:00
LoadingMeter_mtr : 11.5
Weight_kgs : 2560
输出显示,但也存储在$results
中-要访问每个属性,只需使用点符号
PS C:> $results.load
8594557
PS C:> $results.weight_kgs
2560
PS C:> $results.PickupDate
7/8/2020 00:00:00
这是同样的事情,但从文件中读取-注意-Raw参数。
(get-content $filestoprocess -Raw) -match '(?s)^LOAD.*(?=Comment_TO)' | foreach {
$ht = [ordered]@{}
$Matches.0 -split [Environment]::NewLine |
Foreach-Object{$_ -Replace "(?<=D):","=" |
ConvertFrom-StringData | Foreach-Object{$ht += $_}}
[PSCustomObject]$ht
} -OutVariable results
现在它已经在对象中了,您可以专注于制作HTML