Невозможно получить количество строк CSV в Powershell - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть 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

1 Ответ

0 голосов
/ 10 ноября 2018

если в CSV-файле имеется ОДНА строка данных, то при импорте создается один объект. , которая имеет известную ошибку в том, что она сообщит ноль как .Count переменной $ Var. , это, кажется, происходит с чем-либо , которое возвращает единственный 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...