我有一个结构如下的csv文件:
Text,Url
Learning Haskell,https://wiki.haskell.org/Learning_Haskell
我正在尝试遍历csv文件之前获取行数,因为我不想在空结果上开始循环。
通过研究(1,2),看来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
答案 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