我有以下 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/