Почему PowerShell перечисляет первую запись импортированного CSV как имя переменной? - PullRequest
1 голос
/ 24 июня 2019

Я хочу напечатать список пользователей после импорта из CSV

Я запустил переменную $users из терминала, попытался вызвать переменную как массив и попытался Write-Host из циклапросматривая список пользователей.

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

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

Я ожидаю, что все пользователи будут отображаться в виде списка в CSV:

Jack null
Ally Staniforth
John Hill
Samantha Sullivan
Danny Allen

Хотя фактический вывод:

@{Jodie Stockham=Jason Dickson}
@{Jodie Stockham=Dwayne Bartlett-Kennedy}
@{Jodie Stockham=Mark Lamprey}
@{Jodie Stockham=Anthony Triggs}
@{Jodie Stockham=Allan Hood}

1 Ответ

2 голосов
/ 24 июня 2019

Содержит ли ваш файл заголовок? Из вывода это выглядит как список имен:

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

ПРИМЕЧАНИЕ : вы можете легко проверить, что я упомянул выше, используя этот командлет:

PS> Import-CSV .\users.csv

Вывод будет таким (имя в заголовке):

Jodie Stockham
--------------
Jason Dickson
Dwayne Bartlett-Kennedy
Mark Lamprey
Anthony Triggs
Allan Hood
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...