我正在使用 PowerShell v2,并使用如下代码定义了一个名为 Material 的自定义类型:
add-type @"
public struct Material {
public string BusinessUnit;
public string Source;
public string PrimarySource;
public string LegacyMaterialNumber;
}
"@
...我有一个此类对象的集合,正在使用 Export-Csv cmdlet 写入 CSV 文件。这工作正常并生成具有如下指定的原始类型的数据:
#TYPE Material
BusinessUnit,Source,PrimarySource,LegacyMaterialNumber
BU1,NAFO,NAFO-FG,17502
BU1,NAFO,NAFO-FG,17504
BU1,NAFO,NAFO-FG,17739
BU1,NAFO,NAFO-FG,17837
BU1,NAFO,NAFO-FG,17841
我遇到的问题是当我使用Import-Csv导入此数据时,每行都会创建为以下类型:
CSV:Material
...而不是我开始时的原始类型:
Material
在我的具体情况下,这是一个问题,因为我想将每个 Material 传递到一个函数中,该函数的参数专门键入为 Material 。当然,我可以解析每一行并用数据重建我的 Material 对象,但是有没有一种快速方法可以将 CSV 数据导入为原始类型?
最佳答案
Import-Csv
想要创建基于 PSObject
的类型。您可以创建转换函数(或过滤器)来转换为 Material 类型。然后将 import-csv
的输出通过管道传输到此函数并传输到目标数组中:
filter convert-csvToMaterial([Parameter(Mandatory=$true,ValueFromPipeline=$true)]$csvMaterial)
{
$material = new-object -TypeName Material
$material.BusinessUnit = $csvMaterial.BusinessUnit
$material.LegacyMaterialNumber = $csvMaterial.LegacyMaterialNumber
$material.PrimarySource = $csvMaterial.PrimarySource
$material.Source = $csvMaterial.Source
$material
}
$importedMaterial = import-csv .\materialList.csv | convert-csvToMaterial
关于powershell - 使用 PowerShell 的 Import-Csv cmdlet 将 CSV 类型快速转换为原始类型的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17857385/