繁体   English   中英

将 csv 转换为 Powershell 中的表

[英]Convert csv to a table in Powershell

我有一个格式如下的 csv 需要转换为 json 或表格,以便我可以轻松解析它并在我的代码后面使用值作为 arguments

Directory     : \\foo\foofoo\nightly.188\share\name
Name          : name.pst
Length        : 271360
CreationTime  : 6/4/2009 2:42:21 PM
LastWriteTime : 6/9/2011 8:58:50 AM

Directory     : \\foo\foofoo\nightly.188\share\name
Name          : name2.pst
Length        : 71123968
CreationTime  : 10/5/2010 2:41:56 PM
LastWriteTime : 8/1/2011 4:08:32 PM

我曾尝试使用 Format-List 和 Format-Table 但没有帮助。

任何输入将不胜感激。

我希望 output 采用表格结构,如下所示:

目录名称长度 CreationTime LastWriteTime \foo\foofoo\nightly.188\share\name name.pst 271360 6/4/2009 2:42:21 PM 8/1/2011 4:08:32 PM \foo\foofoo\nightly。 188\share\name name2.pst 71123968 2010 年 10 月 5 日下午 2:41:56 2011 年 8 月 1 日下午 4:08:32

要将 CSV 数据作为表格查看到控制台,请执行以下操作

$sorceFile = "D:\temp\source.csv"
Import-Csv $sorceFile | Format-Table -AutoSize

如果您想以交互方式查看数据,也可以使用“Out-GridView”命令

$sorceFile = "D:\temp\source.csv"
Import-Csv $sorceFile | Out-GridView

下面将 CSV 数据转换为 Json 数据

$sorceFile = "D:\temp\source.csv"
$JsonData = Import-Csv $sorceFile | ConvertTo-Json
$JsonData

然而,这只是一个字符串。 如果您想进一步处理 CSV 文件中的数据,请执行以下操作以保存到变量中。

$sorceFile = "D:\temp\source.csv"
$CsvData= Import-Csv $sorceFile

# view formatted table in console
$CsvData | format-table

#example data query 
$CsvData | Where-Object{$_.Name -eq 'name.pst'}

#example loop
foreach ($row in $CsvData) {
    Write-Output "Name: $($row.name) CreationTime: $(get-date $row.CreationTime -Format 'dddd MM/dd/yyyy HH:mm K')"
}

Format-List 和 Format-table 将您的数据转换为适合在控制台上显示的形式,或复制到文本文件中。 这对于解析很有用,但不适用于将数据作为 arguments 传递。 如果你只是做这样的导入:

Import-Csv myfile.csv

Powershell 会在将其放入控制台之前为您执行隐式格式表或格式列表。

如果要将内容用作 arguments,请注意 csv 文件的内容将转换为 PSCustomObject 的数组。 每个 PSCustomObject 都具有与 CSV 文件的 header 中提供的字段名称相同的属性。

Import-Csv thefile.csv | % {
    "The file $($_.name) contains:"
    Get-Content $_.name
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM