使用powershell循环使用csv

时间:2015-11-20 13:48:29

标签: powershell

我试图使用powershell循环访问csv文件但由于某种原因我的foreach循环不会执行。我在网上找不到任何关于为什么会这样的东西。奇怪的是,如果我使用一个简单的for循环,我可以迭代,但我只是想知道这个问题是什么,以供将来参考。我的代码在

之下
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

3 个答案:

答案 0 :(得分:0)

似乎ISE正在跳过for循环

答案 1 :(得分:-1)

恢复我将使用的数组中的行 得到内容

那么你的循环就可以了。

$ arrayWithAllLines = get-content $ PSScriptRoot \ Book1.csv

答案 2 :(得分:-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

我会关注环境因素。您使用的OS / PS版本是什么?你有没有在其他平台上试过它?