gpt4 book ai didi

powershell - 使用PowerShell的Import-Csv cmdlet将CSV类型转换为原始类型的快速方法?

转载 作者:行者123 更新时间:2023-12-02 23:47:03 24 4
gpt4 key购买 nike

我正在使用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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com