[英]create and display a powershell object with 2 columns with 15 lines from a file .txt
我想創建並顯示一個 powershell object 具有兩列(兩個屬性: np
和date
),來自文件“test.txt”的 15 行。
1 21/05/20 2 21/05/20 3 21/05/20 4 21/05/20 5 21/05/20 6 21/05/20 7 21/05/20 8 21/05/20 9 21/05/20 10 21/05/20 11 21/05/20 12 21/05/20 13 21/05/20 14 21/05/20 15 21/05/20
這是我的代碼:
$path1="C:\content1\test.txt"
$tableau = Get-Content $path1
Foreach($valeur in $tableau) {
# trim spaces at beginning and end
$valeur = $valeur.trim()
# insert , at specific places for ConvertFrom-CSV command
$valeur = $valeur.insert(2,",")
$valeur = $valeur -replace "\s+",""
$Object = $valeur | ConvertFrom-Csv -Header 'np', 'date'
}
$Object
我的代碼的 output 是:
np date -- ---- 15 21/05/20
我的 object $Object
只有最后一行,而我想要 my.txt 文件的 15 行。
在 foreach 循環的每一輪中,您都設置$Object
,從而覆蓋了先前的值。
移動循環內的最后一行,您將獲得值。
$path1="C:\content1\test.txt"
$tableau =Get-Content $path1
Foreach($valeur in $tableau){ # trim spaces at beginning and end
$valeur= $valeur.trim()
# insert , at specific places for ConvertFrom-CSV command
$valeur=$valeur.insert(2,",")
$valeur=$valeur -replace "\s+",""
$Object =$valeur | ConvertFrom-Csv -Header 'np', 'date'
$Object
}
您可以直接將foreach
的 output 分配給變量$object
,如下所示:
$path1="C:\content1\test.txt"
$tableau = Get-Content $path1
$object = Foreach($valeur in $tableau) {
# trim spaces at beginning and end
$valeur = $valeur.trim()
# insert , at specific places for ConvertFrom-CSV command
$valeur = $valeur.insert(2,",")
$valeur = $valeur -replace "\s+",""
$valeur | ConvertFrom-Csv -Header 'np', 'date'
}
看起來很奇怪,但它是 PowerShell 中的常見模式(例如,您也可以從其他控制塊的 output 分配,如if
和switch
)。
這類似於將管道的 output 分配給變量。 ConvertFrom-Csv
的 output 被自動捕獲並添加到 PowerShell 構建並最終分配給$object
的數組中。
就這點怎么樣...
$RecordList = (Get-Content 'D:\Temp\TestFile.txt'|
Select-Object -First 16) -replace "\s+","," |
ConvertFrom-Csv -Header np, date
# Results
<#
np date
-- ----
1 21/05/20
2 21/05/20
3 21/05/20
...
#>
$RecordList.np
# Results
<#
1
2
3
...
#>
$RecordList.date
# Results
<#
21/05/20
21/05/20
21/05/20
...
#>
Or
(Get-Content 'D:\Temp\TestFile.txt'|
Select-Object -First 16) -replace "\s+","," |
ForEach {
[pscustomobject]@{
np = ($PSItem -split ',')[0]
date = ($PSItem -split ',')[1]
}
}
# Results
<#
np date
-- ----
1 21/05/20
2 21/05/20
3 21/05/20
...
#>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.