powershell-3.0 - 从 CSV 输入创建自定义 PowerShell 对象

标签 powershell-3.0

我有以下 CSV 输入:

id,name,surname,age,description
1,michael,jackson,50,desc1
2,james,hetfield,55,desc2

I want to convert it into the following format as a string:

availableValues = [ 
    { 
        'value' : 'id=1,name=michael,surname=jackson,age=50', 
        'displayName' : 'michael', 
        'description' : 'desc1' 
    }, 
    {
        'value' : 'id=1,name=james,surname=hetfield,age=55', 
        'displayName' : 'james', 
        'description' : 'desc2' 
    } 
]

所以我想,我应该先构建一个自定义 PS 对象,然后格式化其输出。

$csvfile = "C:\Users\<blabla>\Desktop\scr\csv.txt"
$csv = Import-Csv $csvfile
$newobject = New-Object -TypeName PSOBject
Add-Member -NotePropertyName value -NotePropertyValue $csv -InputObject $newobject
Add-Member -NotePropertyName displayName -NotePropertyValue $csv.name -InputObject $newobject
Add-Member -NotePropertyName description -NotePropertyValue $csv.description -InputObject $newobject

所以 $newobject 现在看起来像这样:

PS> $newobject

value                                                                                                                                 displayName      description   
-----                                                                                                                                 -----------      -----------   
{@{id=1; name=michael; surname=jackson; age=50; description=desc1}, @{id=2; name=james; surname=hetfield; age=55; description=desc2}} {michael, james} {desc1, desc2}

下一步将是构建一个对象数组,或者可能是一个哈希表,但我不知道如何构建,我有点迷失了。你能指出我正确的方向吗?

最佳答案

使用calculated properties修改 Import-Csv 生成的对象:

$availableValues = Import-Csv $csvfile | Select-Object @{n='value';e={
    'id={0},name={1},surname={2},age={3}' -f $_.id, $_.name, $_.surname, $_.age
}}, @{n='displayName';e={$_.name}}, description 

或者,您也可以创建新的自定义对象:

$availableValues = Import-Csv $csvfile | ForEach-Object {
    [PSCustomObject]@{
        'value'       = 'id={0},name={1},surname={2},age={3}' -f $_.id, $_.name, $_.surname, $_.age
        'displayName' = $_.name
        'description' = $_.description
    }
}

关于powershell-3.0 - 从 CSV 输入创建自定义 PowerShell 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48270462/

相关文章:

powershell-3.0 - PowerShell 3.0 中 [ordered] 的正确名称是什么?

json - 在powershell中合并两个Json

powershell - 如何遍历哈希表,该哈希表包含具有键,值的多个数组,并附加另一个字符串?

mysql - 使用 PowerShell 3 连接到 MySQL 数据库

powershell - 隐藏 Invoke-WebRequest 的进度

c# - 如何正确关闭 ODP.net 连接 : dispose() or close()?

windows - 如何在powershell中不断尝试某件事直到成功?

powershell - Get-Aduser -Filter将不接受变量

powershell,如何监控目录并将文件移动到另一个文件夹

powershell - Powershell Function为数组中的每个项目运行(我不希望这种情况发生)