代码之家  ›  专栏  ›  技术社区  ›  ΩmegaMan

对象的列添加表达式接收错误哈希文本不完整

  •  0
  • ΩmegaMan  · 技术社区  · 7 年前

    为什么我可以在脚本块外部而不是内部执行命令?

    我的最终目标是根据预定义的类别对目录列表进行排序。代码从目录列表中创建一个动态对象,并添加两列。创建的第一列是从名称派生的类别,第二列 那是基于第一个 是以后排序的索引。


    实际误差

    The hash literal was incomplete.
    At line:0 char:0
    

    独立工作代码

    $importance = "Hierarchy", "Item", "UPC", "Color", "Price"
    $importance.IndexOf('UPC') # returns 2
    

    故障代码

    总的任务是做一个目录列表和 最终 列表排序依据 $importance 。通过创建动态列,它将在名为 Index .

    $match = "UPC|Item|Color|Price|Hierarchy"
    
    gci $incrementalTargetDir `
    | Select-Object Name, @{label="Category"; Expression= {[regex]::match($_.BaseName, $match).Groups[0].Value}} `
    | Select-Object Name, @{label="Index"; Expression= { $importance.IndexOf($_.Category) } 
    

    第二次失败 Select-Object


    First Select成功返回此数据:

    Name                        Category
    ----                        --------
    ColorStyleSize.txt          Color
    Item.txt                    Item
    FieldProductHierarchy.txt   Hierarchy
    UPC.txt                     UPC
    PriceAdjust.txt             Price
    

    还尝试添加范围 script: 结果相同:

     …. Expression= { $script:importance.IndexOf($_.Category)
    
    0 回复  |  直到 7 年前
        1
  •  1
  •   AdminOfThings    7 年前

    } Select-Object

    if

    $incrementalTargetDir = 'Drive:\Folder1\Folder2'
    $importance = "Hierarchy", "Item", "UPC", "Color", "Price"
    $match = "UPC|Item|Color|Price|Hierarchy"
    
    foreach ($file in (Get-ChildItem $incrementalTargetDir)) {
        $Category = $null
        $Category = [regex]::match($file.BaseName, $match).Groups[0].Value
    
        if ($Category) {
            [pscustomobject]@{
                Name = $file.Name
                Category = $Category
                Index = $importance.IndexOf($Category)
            }
        }
    }
    
    推荐文章