CSV-вход, PowerShell вытягивает строки с нулевым значением из целевого столбца - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь создать сценарий для создания команд в Microsoft Teams из данных в файле CSV.

Файл CSV имеет следующие столбцы: Team_name, Team_owner, Team_Description, Team_class

Сценарий должен получить Team_name значение строки и использовать это значение для создания переменной. Используйте эту переменную для запроса, если она существует в командах, и если нет, создайте ее, используя данные в других столбцах.

Проблема в том, что мой цикл foreach, похоже, собирает строки без значений. Я упростил тестирование, сначала попытавшись определить значения и отслеживая результаты.

Вот тестовый скрипт

$Team_infocsv = Import-csv -path $path Teams_info.csv

# $Team_infocsv | Foreach-object{

foreach($line in $Team_infocsv){
    $owner = $line.Team_owner
    Write-Host "Team Owner: $owner"
    $teamname = $line.Team_name
    Write-Host "Team Name: $teamname"
    $team_descr = $line.Team_Description
    Write-Host "Team Description: $team_descr"
    $teamclass = $line.Team_class
    Write-Host "Team Class: $teamclass"
}

У меня есть только две строки данных, но все же возвращаются две строки в соответствии с запросом с дополнительным выводом (из строк) без значений.

1 Ответ

0 голосов
/ 05 мая 2018

Нет проблем с вашим кодом как таковым, кроме:

  • Teams_info.csv указано в дополнение к $path после Import-Csv -Path, что, как я полагаю, является опечаткой.

  • $path может предположительно - и случайно - быть массивом путей к файлам, и если дополнительный файл (-ы) имеет совершенно другие столбцы, вы получите пустые значения для первого столбцы файла.

Если нет, то проблема должна быть в содержании Teams_info.csv, поэтому я предлагаю вам изучить это; трубопровод к Format-Custom, как показано ниже, также поможет вам обнаружить случай, когда $path является неожиданно массивом путей к файлам:

Вот рабочий пример CSV-файла, напоминающего ваш ввод - созданный ad hoc, - который вы можете сравнить с вашим входным файлом.

# Create sample file.
@'
"Team_name","Team_owner","Team_Description","Team_class"
"Team_nameVal1","Team_ownerVal1","Team_DescriptionVal1","Team_classVal1"
"Team_nameVal2","Team_ownerVal2","Team_DescriptionVal2","Team_classVal2"
'@ > test.csv

# Import the file and examine the objects that get created.
# Note the use of Format-Custom.
Import-Csv test.csv test.csv | Format-Custom

Вышеуказанные выходы:

class PSCustomObject
{
  Team_name = Team_nameVal1
  Team_owner = Team_ownerVal1
  Team_Description = Team_DescriptionVal1
  Team_class = Team_classVal1
}

class PSCustomObject
{
  Team_name = Team_nameVal2
  Team_owner = Team_ownerVal2
  Team_Description = Team_DescriptionVal2
  Team_class = Team_classVal2
}

Format-Custom создает пользовательское представление (представление не в виде таблицы и не в виде списка) в соответствии с типом выводимых экземпляров; в случае [pscustomobject] экземпляров, которые выводят Import-Csv, вы получаете вышеупомянутый вид, который является удобным способом получить хотя бы быстрое представление о содержимом объектов (вам, возможно, все же придется копать глубже, чтобы отличить пустые строки от $null с, ...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...