将 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
- 删除临时文件。
我有一个强大的脚本,可以从 .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
- 删除临时文件。