如何在 PowerShell 中將 CSV 檔案導入陣列

  1. 逗號分隔值檔案
  2. 使用 Import-CSV 指令將 CSV 檔案導入 PowerShell 中的數組
  3. 使用 Get-ContentConvertFrom-Csv 指令將 CSV 檔案導入 PowerShell 中的數組
  4. 使用 System.IO.FileConvertFrom-Csv 指令將 CSV 檔案導入 PowerShell 中的數組
  5. 結論
如何在 PowerShell 中將 CSV 檔案導入陣列

CSV(逗號分隔值)檔案作為一種基本的數據格式,以表格結構封裝資訊,字段由逗號分隔。雖然通常與電子表格軟體相關聯,但其簡單而多功能的特性在各種平台上都有應用,包括 PowerShell。

在 PowerShell 腳本中,高效地讀取和處理 CSV 數據對於自動化和數據操作任務至關重要。本文探討了三種方法——Import-CSVGet-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 對象的格式列表。

輸出:

將 CSV 文件讀取到 PowerShell 的陣列中 - 輸出 1

在 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 數組中的第一個元素(或行)。

輸出:

在 PowerShell 中將 CSV 文件讀取到數組 - 輸出 2

我們可以從 Windows PowerShell 數組中的特定元素查詢其屬性,方法是將列名當作屬性名稱,如下面的示例。

$users = Import-Csv path/users.csv
$users[0].Name

在導入 CSV 檔案並將其內容存儲在 $users 變量後,我們接著訪問 CSV 數據第一行的特定屬性。在這種情況下,我們想要檢索第一行的 Name 屬性的值。

通過指定 $users[0].Name,我們正在訪問代表 CSV 數據第一行的對象的 Name 屬性。這使我們能夠檢索 CSV 檔案中第一行的 Name 列所關聯的值。

輸出:

在 PowerShell 中將 CSV 文件讀取到數組 - 輸出 3

我們可以使用下面的 Count 屬性來計算數組中的元素數量。

$users = Import-Csv path/users.csv
$users.Count

在導入 CSV 檔案並將其內容存儲在 $users 變量後,我們想確定數組中的項目(行)數。

通過使用 $users.Count,我們正在訪問存儲在 $users 變量中的數組的 Count 屬性。此屬性返回數組中的項目(行)數量。

輸出:

在 PowerShell 中將 CSV 文件讀取到數組 - 輸出 4

使用 Get-ContentConvertFrom-Csv 指令將 CSV 檔案導入 PowerShell 中的數組

實現這個任務的一種簡單方法是使用 Get-ContentConvertFrom-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 對象的格式列表。

輸出:

在 PowerShell 中將 CSV 文件讀取為數組 - 輸出 5

使用 System.IO.FileConvertFrom-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 文件讀取到數組 - 輸出 6

結論

在 PowerShell 腳本中,無縫處理 CSV 數據對於有效的自動化和數據處理至關重要。通過利用 Import-CSVGet-Content 指令或 System.IO.File 類與 ConvertFrom-Csv 指令,用戶可以高效地將 CSV 檔案讀取到數組中,使他們能夠輕鬆而靈活地操作數據。

無論是從大型數據集中提取見解還是自動化重複任務,這些方法提供了強大的工具,供 PowerShell 開發人員使用。通過對這些技術的清晰理解,用戶可以在其腳本中充分發揮 CSV 數據的力量,簡化工作流程並提高生產力。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相關文章 - PowerShell Array

相關文章 - PowerShell CSV