如何在 PowerShell 中將 CSV 檔案導入陣列
- 逗號分隔值檔案
-
使用
Import-CSV
指令將 CSV 檔案導入 PowerShell 中的數組 -
使用
Get-Content
和ConvertFrom-Csv
指令將 CSV 檔案導入 PowerShell 中的數組 -
使用
System.IO.File
和ConvertFrom-Csv
指令將 CSV 檔案導入 PowerShell 中的數組 - 結論

CSV(逗號分隔值)檔案作為一種基本的數據格式,以表格結構封裝資訊,字段由逗號分隔。雖然通常與電子表格軟體相關聯,但其簡單而多功能的特性在各種平台上都有應用,包括 PowerShell。
在 PowerShell 腳本中,高效地讀取和處理 CSV 數據對於自動化和數據操作任務至關重要。本文探討了三種方法——Import-CSV
、Get-Content
指令和 System.IO.File
類與 ConvertFrom-Csv
指令——用於將 CSV 檔案導入數組,提供其使用、優勢和應用場景的見解。
逗號分隔值檔案
CSV(逗號分隔值)檔案包含以逗號分隔的數據或集合。這使得數據可以以表格格式保存。
用戶可以在大多數電子表格程序中使用 CSV 檔案,如 Microsoft Excel 或 Google 電子表格。然而,當我們在不支持表格格式的軟體中打開時,數據將是逗號分隔的,這使得 PowerShell 可以用來將值分隔為數組。
例如,以下是具有兩列的原始 CSV 格式。
users.csv
檔案:
Name,Salary
John,1000
Paul,2000
Mary,1500
Matt,3000
使用 Import-CSV
指令將 CSV 檔案導入 PowerShell 中的數組
Windows PowerShell 中的 Import-CSV
命令從上述 CSV 檔案中創建類似自定義對象的表格。
在以下的 Windows PowerShell 腳本中,我們將使用 Import-CSV
命令將 CSV 檔案數據分配給 Windows PowerShell 數組類型變量。
$users = Import-Csv path\users.csv
$users
我們首先使用 Import-Csv
指令從位於 path\users.csv
的 CSV 檔案中讀取數據。此指令讀取 CSV 檔案的內容並將其轉換為 PowerShell 對象。
然後,我們將導入的 CSV 數據賦值給變量 $users
。該變量現在將 CSV 檔案的內容作為對象的數組,每個對象代表 CSV 檔案中的一行。
執行後,我們可以看到 CSV 檔案的值轉換為名為 ArrayList
對象的格式列表。
輸出:
在 PowerShell 中將 CSV 檔案導入數組後訪問元素
當我們在 PowerShell 中使用 Import-Csv
導入 CSV 檔案時,CSV 檔案的每一行都作為一個對象表示,整個 CSV 數據存儲為這些對象的數組。要訪問 CSV 數據中的單獨行或元素,我們使用數組索引。
$users = Import-Csv path\users.csv
$users[0]
我們首先從指定路徑導入名為 users.csv
的 CSV 檔案。我們為此使用 Import-Csv
指令。
此指令讀取 CSV 檔案的內容並將其轉換為 PowerShell 對象。
導入 CSV 檔案後,我們想要訪問 CSV 數據的第一行。我們通過使用數組索引來實現這一點。
在 PowerShell 中,數組索引從 0 開始,因此 $users[0]
指的是 $users
數組中的第一個元素(或行)。
輸出:
我們可以從 Windows PowerShell 數組中的特定元素查詢其屬性,方法是將列名當作屬性名稱,如下面的示例。
$users = Import-Csv path/users.csv
$users[0].Name
在導入 CSV 檔案並將其內容存儲在 $users
變量後,我們接著訪問 CSV 數據第一行的特定屬性。在這種情況下,我們想要檢索第一行的 Name
屬性的值。
通過指定 $users[0].Name
,我們正在訪問代表 CSV 數據第一行的對象的 Name
屬性。這使我們能夠檢索 CSV 檔案中第一行的 Name
列所關聯的值。
輸出:
我們可以使用下面的 Count
屬性來計算數組中的元素數量。
$users = Import-Csv path/users.csv
$users.Count
在導入 CSV 檔案並將其內容存儲在 $users
變量後,我們想確定數組中的項目(行)數。
通過使用 $users.Count
,我們正在訪問存儲在 $users
變量中的數組的 Count
屬性。此屬性返回數組中的項目(行)數量。
輸出:
使用 Get-Content
和 ConvertFrom-Csv
指令將 CSV 檔案導入 PowerShell 中的數組
實現這個任務的一種簡單方法是使用 Get-Content
和 ConvertFrom-Csv
指令。此方法允許我們使用 Get-Content
將 CSV 檔案的內容作為文本讀取,然後使用 ConvertFrom-Csv
將其轉換為 PowerShell 對象,從而創建表示 CSV 數據每一行的對象數組。
$content = Get-Content -Path "C:\path\data.csv"
$array = $content | ConvertFrom-Csv
$array
我們首先使用 Get-Content
來讀取位於指定路徑的 CSV 檔案的內容,並將其存儲在 $content
變量中。
接下來,我們將存儲在 $content
中的 CSV 檔案內容傳遞給 ConvertFrom-Csv
。此指令將 CSV 文本轉換為 PowerShell 對象並存儲在 $array
變量中。
執行後,我們可以看到 CSV 檔案的值轉換為名為 ArrayList
對象的格式列表。
輸出:
使用 System.IO.File
和 ConvertFrom-Csv
指令將 CSV 檔案導入 PowerShell 中的數組
System.IO.File
類允許讀取 CSV 檔案的內容,然後使用 ConvertFrom-Csv
指令將其轉換為 PowerShell 對象。這種方法不僅提供靈活性,還確保易用性,使用戶能夠輕鬆地在其 PowerShell 腳本中管理 CSV 數據。
$content = [System.IO.File]::ReadAllText("C:\path\data.csv")
$array = $content | ConvertFrom-Csv
$array
我們使用 [System.IO.File]::ReadAllText
來讀取位於指定路徑的 CSV 檔案的內容並將其存儲在 $content
變量中。
接下來,我們將存儲在 $content
中的 CSV 檔案內容傳遞給 ConvertFrom-Csv
。此指令將 CSV 文本轉換為 PowerShell 對象並存儲在 $array
變量中。
執行後,我們可以看到 CSV 檔案的值轉換為名為 ArrayList
對象的格式列表。
輸出:
結論
在 PowerShell 腳本中,無縫處理 CSV 數據對於有效的自動化和數據處理至關重要。通過利用 Import-CSV
、Get-Content
指令或 System.IO.File
類與 ConvertFrom-Csv
指令,用戶可以高效地將 CSV 檔案讀取到數組中,使他們能夠輕鬆而靈活地操作數據。
無論是從大型數據集中提取見解還是自動化重複任務,這些方法提供了強大的工具,供 PowerShell 開發人員使用。通過對這些技術的清晰理解,用戶可以在其腳本中充分發揮 CSV 數據的力量,簡化工作流程並提高生產力。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn相關文章 - PowerShell Array
- PowerShell 中的字串陣列
- 在 PowerShell 中的位元組陣列
- 如何在 PowerShell 中將數組傳遞給函數
- 如何在 PowerShell 中創建一個空的陣列的陣列
- 如何使用 PowerShell 對數組值進行排序
- PowerShell 多維陣列