2015-11-20 5 views
0

Im пытается пропустить csv-файл, используя powershell, но по какой-то причине мой цикл foreach не будет выполняться. Я смотрел онлайн не мог найти ничего о том, почему это было бы. Странно, если я использую простой цикл для цикла, я могу повторить его, но им просто интересно, что проблема для будущей справки. Мой код нижецикл через csv с powershell

Clear-Host 

$path = Split-Path -Path $MyInvocation.MyCommand.Path -Parent 
$csv = Import-Csv $path\Book1.csv -Delimiter ";" 

Write-Host $csv 
Write-Host @($csv).Length 

#When debugging the foreach doesnt get executed 
ForEach($l in $csv){ 
    Write-Host $l.ProjectManager 
} 

#This works fine 
for($i = 0; $i -lt @($csv).Length; $i++){ 
    Write-Host $csv.Item($i).ProjectManager 
} 

Херес файл CSV

ProjectName;ProjectOwner;ProjectManager;ProjectNumber 
Test1;Rich Banks;Monica Ruden;1234567891 
Test2;Steve Jones;Steve Gibb;1234567892 
+0

Я не могу воспроизвести ее. Оба цикла работают для меня. Это фактический код, который вы используете? – EBGreen

+0

Можете ли вы опубликовать образец того, что представляет собой ваш контент csv? Кроме того, я бы попытался заменить запятые запятыми. Теоретически любой разделитель должен работать, но при устранении таких странных проблем лучше всего вернуться к «основам». – McKenning

+0

У вас есть столбец «ProjectManager» в вашем csv? – toshi

ответ

0

Кажется, что ISE пропускает петлю для петли

-1

восстановить строки в массив я хотел бы использовать получить содержанием

тогда ваш цикл будет работать.

$ arrayWithAllLines = Get-Content $ PSScriptRoot \ Book1.csv

+0

Этот ответ очень противоречит духу powershell. Обработка строк CSV в виде строк гораздо менее гибкая, чем обработка их как объектов. – EBGreen

+0

вы правы, EBGreen, я согласен. – toshi

-1

Там нет ничего плохого в этом коде. Он работает как ожидается в Windows 2012 R2 (PowerShell v3.0).

Выход заключается в следующем:

@{ProjectName=Test1; ProjectOwner=Rich Banks; ProjectManager=Monica Ruden; ProjectNumber=1234567891} @{ProjectName=Test2 
; ProjectOwner=Steve Jones; ProjectManager=Steve Gibb; ProjectNumber=1234567892} 
2 
Monica Ruden 
Steve Gibb 
Monica Ruden 
Steve Gibb 

Я хотел бы посмотреть на факторы окружающей среды. Какую версию ОС/PS вы используете? Вы пробовали это на других платформах?

+0

Это тоже не ответ. – EBGreen

Смежные вопросы