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

如何将PowerShell中ForEach-Object的结果作为Import-Csv的文件名?

解决思路与修正后的脚本

你的核心问题是管道上下文失效:原来的两段脚本是独立执行的,$_.Name在第二段里无法获取前面Get-ChildItem的结果;另外递归获取文件时只取文件名会导致路径错误(子文件夹里的文件找不到),还有一处拼写错误$fileimpot应该是$fileimport。

直接通过管道将Get-ChildItem返回的文件对象传递给ForEach-Object,在循环体内用文件对象的FullName属性(完整UNC路径)导入CSV是最可靠的方式:

基础版(逐个处理文件并输出字段)

Get-ChildItem -Recurse -Path '\\xyz' -Filter *.csv | ForEach-Object {
    # 用当前文件的完整路径导入CSV
    $fileImport = Import-Csv -Path $_.FullName -Delimiter ","
    # 输出指定字段
    $fileImport.Item
}

进阶版(收集所有文件的目标字段结果)

如果需要把所有文件的Item字段值统一收集起来,可以这样写:

# 遍历所有CSV文件,导入后提取Item字段
$allItemValues = Get-ChildItem -Recurse -Path '\\xyz' -Filter *.csv | ForEach-Object {
    Import-Csv -Path $_.FullName -Delimiter "," | Select-Object -ExpandProperty Item
}

# 输出所有收集到的结果
$allItemValues

关键说明

  • 用$_.FullName而不是拼接路径:递归查找时,子文件夹里的文件仅靠Name无法定位到正确路径,FullName会直接给出完整的UNC路径(比如\\xyz\subfolder\file.csv),避免文件找不到的问题。
  • 管道上下文保持连贯:整个流程通过管道串联,确保每个文件对象能被后续的Import-Csv直接使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:52:02