如何在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
相关产品推荐
相关产品推荐

