Создание файла CSV как объекта - PullRequest
0 голосов
/ 06 июня 2018

У меня есть надежный скрипт, который получает, анализирует и использует некоторые данные из файла .csv.Для запуска сценария я могу использовать

. \ Script.ps1 -d data_file.csv

Дело в том, что я не могу вмешиваться в сам сценарий, поэтому мне нужносоздайте какую-нибудь оболочку, которая создаст новый CSV-файл, и используйте script.ps1 с новым созданным файлом.Мне интересно, если есть возможность создать CSV-файл как объект, который будет передан непосредственно в команду, как это

. \ Script.ps1 -d csv_file_as_object.csv

без создания файла в некотором каталоге пути.

1 Ответ

0 голосов
/ 06 июня 2018

В этом случае вам потребуется эквивалент Bash's подстановки процесса (<(...)), который, в двух словах, позволил бывы должны представить команды * output в качестве содержимого временного файла , чей path выводится:

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

Примечание:... | ConverTo-Csv обозначает любую команду, необходимую для преобразования исходной CSV-памяти.

В PowerShell такой функции не существует, начиная с Windows PowerShell v5.1 / PowerShell Core v6.1, но было предложено .

Если .\scripts.ps1 также принимает вход stdin (через псевдотрассу * 1033)* с указанием ввода stdin), вы можете попробовать:

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

В противном случае , ваш единственный вариант:

  • сохранить ваши измененные данные CSV в временный файл
  • передать путь временного файла в .\script.ps1
  • удалить временный файл.
...