Почему я могу выполнить команду вне блока скрипта, но не внутри него?
Моя конечная цель - отсортировать список каталогов на основе предопределенных категорий. Код создает динамический объект из списка каталогов и добавляет два столбца. Первый созданный столбец представляет собой категорию, производную от имени, второй столбец , основанный на первом , является индексом для последующей сортировки.
Фактическая ошибка
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
Первый выбор успешно возвращает эти данные:
Name Category
---- --------
ColorStyleSize.txt Color
Item.txt Item
FieldProductHierarchy.txt Hierarchy
UPC.txt UPC
PriceAdjust.txt Price
Также попытался добавить область видимости script:
с тем же результатом:
…. Expression= { $script:importance.IndexOf($_.Category)