我正在从 CSV 导入创建一系列新的 PSObject,然后将它们添加到 $new。我正在使用开关来尝试设置“Notes”属性的值,因为正在创建\添加对象,并且我遇到了一些'hinky'。
当我运行这个...
$import = Import-Csv c:\somerandom.csv
$new = @()
foreach ($Item in $Import) {
$obj = New-Object PsObject -Property @{
Name = $item.Name
Description = $Item.Description
Quantity = $Item.Quantity
Vendor = $Item.Vendor
SubCategory = "Misc"
Notes = ""
}
switch ($obj.Name) {
"iPod" { $obj.Notes = "Burn with the rest of the Apple garbage"}
"nVidia GTX 780ti" { $obj.Notes = "Steal immediately!" }
default { $obj.Notes= "Sorry man... I have no idea what that is"}
}
$new += $obj
}
...它按预期工作。$import 中的所有条目都在 $new 中重新创建,并添加了我的“SubCategory”和“Notes”noteproperties(iPod 得到了烧录标签,780ti 预计被盗)。但是当我使用以下作为开关运行时......
switch ($obj.Name) {
'SOFM090-107-01-PF-R' { $obj.Notes = "Burn with the rest of the Apple garbage"}
'M094-107-01-PF-R' { $obj.Notes = "Steal immediately!" }
default { $obj.Notes = "Sorry man... I have no idea what that is"}
}
...它将所有条目设置为交换机上的“默认”设置。我尝试使用非连字符名称为一个条目运行交换机,并为另一个条目使用连字符条目,并且仅正确设置了连字符版本。
上面的代码是从实际代码中改变的,但它正确地说明了我正在尝试做的事情。我需要添加一个基于零件编号列表的注释属性,并将使用我选择的标签填写“注释”条目。
我试过用单引号、双引号、使用 -wildcard 并用 * 替换开关连字符,并将 ` 字符放在 - 之前。似乎没有任何工作。