[英]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.