You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell脚本中处理内嵌CSV(避免冗长哈希数组)

问题:用CSV式数组替代PowerShell冗长哈希语法处理多行数据

我希望避免使用PowerShell中常见的冗长哈希映射和数组语法。因为有数百行数据,完全没必要将每一行都用@(name='foo'; id='bar')这类结构包裹,只需要一个CSV类型的数组。

以下是我的初始代码:

$header = @('name', 'id', 'type', 'loc')

$mycsv = @(
    # name, id, type, loc
    'Brave', 'Brave.Brave', 1, 'winget'
    'Adobe Acrobat (64-bit)', '{AC76BA86-1033-1033-7760-BC15014EA700}', 2, ''
    'GitHub CLI', 'GitHub.cli', 3, 'C:\portable'
)

# 此处需要实现逻辑,设置CSV/哈希表头,以便下方可以按如下方式使用

Foreach ($app in $mycsv) {
    Write-Host "App Name: $app.name"
    Write-Host "App Type: $app.type"
    Write-Host "App id  : $app.id"
    Write-Host "App Loc : $app.type"
    Write-Host ("-"*40)
}

核心需求:如何使用表头名称逐行处理内嵌CSV?

预期输出:

App Name: Brave
App Type: 1
App id  : Brave.Brave
App Loc : winget
----------------------------------------
...

更新:2022-12-03

最终简洁解决方案如下:

$my = @'
    name,id,type,loc
    Brave, Brave.Brave,1,winget
    "Adobe Acrobat (64-bit)",{AC76BA86-1033-1033-7760-BC15014EA700},2,
    GitHub CLI,GitHub.cli,,C:\portable
'@ 

ConvertFrom-Csv $my | % {
    Write-Host "App Name: $($_.name)"
    Write-Host "App Type: $($_.type)"
    Write-Host "App id  : $($_.id)"
    Write-Host "App Loc : $($_.loc)"
    Write-Host $("-"*40)
}

内容的提问来源于stack exchange,提问作者not2qubit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 16:15:57