无法在Powershell中获取CSV行计数

时间:2018-11-10 14:18:53

标签: powershell csv count

我有一个结构如下的csv文件:

Text,Url
Learning Haskell,https://wiki.haskell.org/Learning_Haskell

我正在尝试遍历csv文件之前获取行数,因为我不想在空结果上开始循环。

通过研究(12),看来Import-csv具有.Count属性,但是由于某些原因,我无法访问该属性。我正在使用Powershell v5。

代码:

[string]$markdownlink = "markdownlinks.csv"
[string]$processedLinks = "completedlinks.txt"

$markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter "," 

# Returns 0
[int]$count=$markdownlinkstoProcess.Count
Write-output $count

1 个答案:

答案 0 :(得分:2)

当CSV文件中只有一个数据行时,导入将生成一个单个对象。 有一个已知的错误,它将报告$ Var的.Count为零。这似乎发生在返回任何一个PSCustomObject的任何上-我不确定。

解决方案是强制使其成为数组。您可以将其转换为[array]或将其包装在@()中。以您的代码为例...

$markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","
$markdownlinkstoProcess.GetType()
# result = PSCustomObject
$markdownlinkstoProcess.Count
# result = 0

$markdownlinkstoProcess = @(Import-Csv $markdownlink -Delimiter ",")
$markdownlinkstoProcess.GetType()
# result = Object[]
$markdownlinkstoProcess.Count
# result = 1