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

PowerShell命令输出格式化求助:生成无引号的CSV文件

解决PowerShell导出无引号CSV的问题

你的问题主要来自两个地方:一是手动给路径字段添加了额外引号,二是Export-Csv默认会为含特殊字符的字段自动套引号。下面分PowerShell版本给出针对性解决方案:

方案1:PowerShell 7及以上版本(推荐)

PowerShell 7+的Export-Csv新增了-UseQuotes Never参数,能直接禁止所有引号添加,同时我们要去掉手动拼接引号的逻辑:

# 定义注册表目标路径
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\*"

# 获取数据并导出为无引号CSV
Get-ItemProperty -Path $regPath | 
  Where-Object { $_."(default)" -ne $null } | 
  Select-Object @{Name='Programs'; Expression={$_.PSChildName}},
                @{Name='Executables'; Expression={$_."(default)"}} |
  Export-Csv -Path .\programs.csv -Encoding ASCII -NoTypeInformation -UseQuotes Never

关键调整说明:

  • 把原列名Program、CommandLine改成你需要的Programs、Executables
  • 移除了手动拼接引号的$q + ... + $q逻辑,注册表默认值本身就是可执行文件路径,无需额外加引号
  • -UseQuotes Never强制导出时不添加任何引号

方案2:Windows PowerShell 5.1版本

如果还在使用Windows PowerShell 5.1(无-UseQuotes参数),可以先转成CSV字符串再批量移除引号:

$regPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\*"

Get-ItemProperty -Path $regPath | 
  Where-Object { $_."(default)" -ne $null } | 
  Select-Object @{Name='Programs'; Expression={$_.PSChildName}},
                @{Name='Executables'; Expression={$_."(default)"}} |
  ConvertTo-Csv -NoTypeInformation |
  ForEach-Object { $_ -replace '"', '' } |
  Out-File -Path .\programs.csv -Encoding ASCII

关键调整说明:

  • ConvertTo-Csv先把对象转为CSV格式的字符串数组
  • ForEach-Object { $_ -replace '"', '' }批量移除所有引号
  • Out-File按ASCII编码写入文件

额外优化:处理注册表原生引号

如果注册表的(default)值本身就带引号(比如带空格的路径会被引号包裹),可以用Trim('"')先清理原生引号:

@{Name='Executables'; Expression={$_."(default)".Trim('"')}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:30:42