将 CSV 文件创建为对象

Creating CSV file as an object

我有一个强大的脚本,可以从 .csv 文件中获取、解析和使用一些数据。 运行 脚本我可以使用

.\script.ps1 -d data_file.csv

问题是我不能干扰脚本本身,这就是为什么我需要创建某种包装器来创建新的 csv 文件并使用脚本。ps1 和新制作的文件。我想知道是否有可能创建一个 csv 文件作为一个对象,它将像这样直接传递给命令

.\script.ps1 -d csv_file_as_object.csv

没有在某些路径目录中创建文件。

在这种情况下,您需要的是 Bash 的 process substitution (<(...)) 的 等价物,其中,简而言之,将允许您将命令的 输出 呈现为 临时文件 的内容,其 路径 是输出:

.\scripts.ps1 -d <(... | ConvertTo-Csv) # !! does NOT work in PowerShell

注意:... | ConverTo-Csv 代表转换内存中原始 CSV 所需的任何命令。

自 Windows PowerShell v5.1 / PowerShell Core v6.1 起,PowerShell 中不存在此类功能,但 has been proposed.

If .\scripts.ps1 恰好也接受 stdin 输入(通过伪路径 - 指示标准输入), 你可以试试:

 ... | ConvertTo-Csv | .\script.ps1 -d -

否则,你唯一的选择是:

  • 将修改后的 CSV 数据保存到 临时文件
  • 将该临时文件的路径传递给 .\script.ps1
  • 删除临时文件。