代码之家  ›  专栏  ›  技术社区  ›  Everette Lamb

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

  •  1
  • Everette Lamb  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  1
  •   mklement0    6 年前

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

    • Teams_info.csv 已指定 此外 $path 之后 Import-Csv -Path ,但我认为这是一个拼写错误。

    • $路径 可能是一个意外的 大堆 如果其他文件具有完全不同的列,则第一个文件的列将为空值。

    如果不是,则问题必须包含 团队信息。csv ,所以我建议你检查一下;管道连接至 Format-Custom 如下所示,您还可以帮助您检测以下情况: $路径 意外为 大堆 文件路径的数目:

    下面是一个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 生成由要输出的实例类型定义的自定义视图(非表和非列表视图);在以下情况下: [pscustomobject] 实例 Import-Csv 输出您可以获得上面的视图,这是一种至少快速了解对象内容的方便方法(您可能还需要深入挖掘以区分空字符串和 $null s、 …)。