我试图使用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
答案 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版本是什么?你有没有在其他平台上试过它?