为什么PowerShell会将导入的CSV的第一项作为变量名列出?

时间:2019-06-24 06:35:38

标签: powershell

从CSV导入后,我要打印用户列表

我已经从终端运行了 <div class="col-md-4" style="padding-left:10px;"> @Html.DropDownListFor(m => m.SelectedDepartment, (IEnumerable<SelectListItem>)TempData["departamentsList"], "SELECCIONE", new { @class = "form-control input" }) <div class="form__validator"> <label ID="validatorDepartment"></label> </div> </div> <div class="col-md-2 form__label" style="padding-left:15px;"> @Html.LabelFor(m => m.Cities)<label style="color:red">*</label>: </div> <div class="col-md-4" style="padding-left:10px;"> @Html.CascadingDropDownListFor( m => m.SelectedCities, m => m.SelectedDepartment, Url.Action("GetCities", "Request"), "id", "SELECCIONE CIUDAD", true, new { @class = "form-control input" }) </div> 变量,尝试将变量作为数组调用,并尝试从遍历用户列表的循环中$users

Write-Host

我希望所有用户都可以像CSV中的列表一样显示:

$users = @(Import-CSV .\users.csv)

foreach ($user in $users) {
write-host $user }

尽管实际输出是:

Jack null
Ally Staniforth
John Hill
Samantha Sullivan
Danny Allen

1 个答案:

答案 0 :(得分:2)

您的文件是否包含标题?从输出中看,它只是一个名称列表:

Jodie Stockham
Jason Dickson
Dwayne Bartlett-Kennedy
Mark Lamprey
Anthony Triggs
Allan Hood

在这种情况下,您无需使用Import-CSV(将第一行视为标题),而只需使用Get-Content

$users = Get-Content .\users.csv

foreach ($user in $users) {
    Write-Host $user
}

如果只想列出名称,则根本不需要使用foreach,只需直接使用变量即可:

PS> $users
Jodie Stockham
Jason Dickson
Dwayne Bartlett-Kennedy
Mark Lamprey
Anthony Triggs
Allan Hood

注意:您可以使用该cmdlet轻松检查我上面提到的内容:

PS> Import-CSV .\users.csv

输出将如下所示(名字作为标题):

Jodie Stockham
--------------
Jason Dickson
Dwayne Bartlett-Kennedy
Mark Lamprey
Anthony Triggs
Allan Hood