在 PowerShell 中將資料匯出為 CSV

Migel Hewage Nimesha 2023年1月30日 2022年5月16日
  1. 使用 Export-CSV PowerShell Cmdlet 將資料匯出到 CSV
  2. 使用 ConvertTo-CSV PowerShell Cmdlet 將資料匯出到 CSV
在 PowerShell 中將資料匯出為 CSV

CSV 檔案只是一個分隔文字檔案,其內容應用了特定格式。該格式與簡單的表結構非常相似,如下例所示。

例如,

Name, NIC, Phone

John, 394829G,  +671392392

Risabh, 32909340J, +12328833

CSVComma Separated Values 的縮寫形式。正如檔案型別 (CSV) 所建議的那樣,它使用逗號分隔資料值。有不同的工具可用於生成包含資料的 CSV 檔案。

在本文中,我們將討論如何在 PowerShell 中將資料匯出到 CSV 檔案。

使用 Export-CSV PowerShell Cmdlet 將資料匯出到 CSV

Export-CSV 是可用於以 CSV 格式匯出資料的 PowerShell cmdlet 之一。此 cmdlet 相對易於使用,並且還提供了一些屬性。

Export-CSV Cmdlet 語法

<data_objects/content> | Export-CSV -Path <path> 
  • <data_objects/content>:提供給 Export-CSV cmdlet 的資料物件/內容。
  • Export-CSV:負責以 CSV 格式匯出資料的 cmdlet。
  • -Path:儲存 csv 檔案的路徑。

示例 01

我們將使用 Get-Process cmdlet 來返回一些資料物件,這些資料物件可以饋送到 Export-CSV cmdlet 以以 CSV 格式匯出。

Get-Process

輸出:

Handles	NPM(k)	PM(K)	WS(K)	CPU(s)	Id		SI 		ProcessName
313		14		3712	10756	7.69	39500	0		ApplicationFrameHost
507		30		22864	22836	2.11	18156	2		armsvc

可以返回多個程序物件。我們可以使用管道 (|) 運算子將返回的物件提供給 Export-CSV cmdlet。然後,你可以使用 Get-Content cmdlet 檢查匯出的 CSV 內容。

Get-Process | Export-CSV -Path .\ProcessObjects.csv
Get-Content -Path .\ProcessObjects.csv

輸出:

"ProcessName","SI","Handles","VM","WS","PM","NPM", .....
"armsvc","2","511","2203597099008","35364864","21979136","30048", ...
"xyz","0","501","299393939","9982824","0021000","393393", ...

很少有有用的屬性可用於更改 Export-CSV cmdlet 的預設行為。

示例 02

Get-Process | Export-CSV -Path .\ProcessObjects.csv -Delimiter ';'
Get-Content -Path .\ProcessObjects.csv

輸出:

"ProcessName";"SI";"Handles";"VM";"WS";"PM";"NPM"; .....
"armsvc";"2";"511";"2203597099008";"35364864";"21979136";"30048"; ...

-Delimiter 選項將分隔符從預設的 , 更改為指定的符號。

使用 ConvertTo-CSV PowerShell Cmdlet 將資料匯出到 CSV

ConvertTo-CSV cmdlet 幾乎類似於上面討論的 Export-CSV cmdlet。兩者之間的唯一區別是 Export-csv cmdlet 將 CSV 字串儲存到檔案中,但 ConvertTo-CSV 並非如此。它只返回逗號分隔的值字串。

ConvertTo-CSV Cmdlet 語法

<data_objects/content> | ConvertTo-CSV 
  • <data_objects/content>:資料物件/內容被提供給 ConvertTo-CSV cmdlet。
  • ConvertTo-CSV:負責返回 CSV 字串的 cmdlet。

例子

Get-Process | ConvertTo-Csv

輸出:

"ProcessName","SI","Handles","VM","WS","PM","NPM", .....
"armsvc","2","511","2203597099008","35364864","21979136","30048", ...
"xyz","0","501","299393939","9982824","0021000","393393", ...p

因此,Export-CSVConvertTo-CSV cmdlet 都是使用 PowerShell 生成 CSV 格式資料的有用工具。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

相關文章 - PowerShell CSV