我是 Powershell 的新手。我有一個包含逗號分隔值的變數。我想要做的是讀取 csv 字串變數中的每個條目,并將其分配給一個變數。我正在使用 ConvertFrom-csv 將資料與標題分開。
如何將每個值分配給變數,或者更好的是,使用 ConvertTo-csv 創建一個新的 csv 字串,例如,其中只有第 2/3/6/7 列?
我最終想將該資料寫入一個新的 csv 檔案。
這是我的測驗代碼:
#Setup the variable
$Data = "test1,test2,test3,1234,5678,1/1/2021,12/31/2021"
$Data | ConvertFrom-csv -Header Header1,Header2, Header3, Header4, Header5, Header6, Header7
# Verify that an object has been created.
$Data |
ConvertFrom-csv -Header Header1,Header2, Header3, Header4, Header5, Header6, Header7 |
Get-Member
#Show header1
Write-Host "--------Value from $Data----------------------------------------"
$Data[0] #doesn't work, only displays the first character of the string
Write-Host "-----------------------------------------------------------------"
uj5u.com熱心網友回復:
如何將每個值分配給一個變數,或者甚至更好地ConvertTo-Csv用于創建一個新的 csv 字串,例如,其中只有第2/3/6/7列?
這是自動化的一種方法:
# Define the CSV without headers
$Data = "test1,test2,test3,1234,5678,1/1/2021,12/31/2021"
# Set the number of headers needed
$headers = $Data.Split(',') | ForEach-Object -Begin { $i = 1 } -Process {
"Header$i"; $i
}
# Set the desired columns we want
$desiredColumns = 2,3,6,7 | ForEach-Object { $_ - 1 } | ForEach-Object {
$headers[$_]
}
# Convert to CSV and filter by Desired Columns
$Data | ConvertFrom-Csv -Header $headers | Select-Object $desiredColumns
結果
Header2 Header3 Header6 Header7
------- ------- ------- -------
test2 test3 1/1/2021 12/31/2021
結果為 CSV
$Data | ConvertFrom-Csv -Header $headers |
Select-Object $desiredColumns | ConvertTo-Csv -NoTypeInformation
"Header2","Header3","Header6","Header7"
"test2","test3","1/1/2021","12/31/2021"
uj5u.com熱心網友回復:
您需要將轉換后的資料分配給變數,而不僅僅是將字串通過管道傳輸到ConvertFrom-CSV.
$Variable = $Data | ConvertFrom-csv -Header Header1,Header2, Header3, Header4, Header5, Header6, Header7
這樣做將允許您執行$Variable[0]并顯示結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/348765.html
