CSV 输入,powershell 从目标列中提取 $null 值行

CSV input, powershell pulling $null value rows from targeted column

我正在尝试创建一个脚本,以根据 CSV 文件中的数据在 Microsoft Teams 中创建 Teams。

CSV 文件包含以下列:Team_name, Team_owner, Team_Description, Team_class

脚本应获取 Team_name 行值并使用该值创建变量。使用该变量来查询它是否存在于 Teams 中,如果不存在,则使用其他列中的数据创建它。

我遇到的问题是我的 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"
}

我只有两行数据,但返回的是请求的两行数据(来自行)没有值的额外输出。

您的代码本身没有问题,除了:

  • Teams_info.csvImport-Csv -Path 之后被指定 除了 $path,我认为这是一个错字,但是.

  • $path 可以想象 - 并且意外地 - 是文件路径的 array ,并且如果附加文件具有完全不同的列,您会得到第一个文件列的空值。

如果不是,那问题肯定出在Teams_info.csv的内容上,建议你检查一下;如下所示通过管道传输到 Format-Custom 还将帮助您检测 $path 意外地是文件路径的 数组 的情况:

这是一个类似于您的输入的 CSV 文件的工作示例 - 临时创建 - 您可以将其与您的输入文件进行比较。

# 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 生成自定义视图(非 table 和非列表视图),由正在输出的实例类型定义;在 Import-Csv 输出的 [pscustomobject] 实例的情况下,您会得到上述视图,这是至少快速了解对象内容的便捷方式(您可能仍需要更深入地挖掘将空字符串与 $nulls, ...).

区分开来