ОК, вопрос выглядит так, как будто он может быть просто
«Как сохранить значения CSV в переменной и просмотреть их?»
Давайте рассмотрим некоторые базовые Powershellконцепции, чтобы понять, что вы должны искать.
Решение есть.
Import-Csv -Path "C:\Test.csv" | %{
Put Code Here
}
Хорошо, давайте объясним это.
Давайте представим, что у нас есть csv с именем test.csv, и внутренняя часть выглядит как
"FirstName","LastName","Age"
"Bill","Boxer","52"
"Steve","Nix","21"
Когда я вызываю Import-CSV, он создает объект PSObject со свойствами, которыеравно заголовку (первая строка CSV):
(Import-csv "C:\Test.csv").FirstName
вернет
Bill
Steve
В PowerShell мы любим трубопровод | То, что это делает, берет информацию для предыдущей команды и перемещает ее к следующей команде, используя $ _ в качестве переменной.Мы также любим стенографию, известную как псевдоним.Например, %{ Code Here }
- это короткая рука для foreach-object
, поэтому
Import-csv "C:\Test.csv" | %{
"My Name Is $($_.FirstName) $($_.LastName) and I am $($_.Age) years old"
}
Получит данные из CSV и преобразует их в объект PSObject.Затем он передаст | в Foreach-объект aka % {} , а затем отобразит строку:
My Name Is Bill Boxer and I am 52 years old
My Name Is Steve Nix and I am 21 years old
Заметьте, что $ () внутри кавычек называется выражением "$ (здесь код)". Позволяет вам вывести код внутри строки.
"Hello $_.FirstName"
Показывает все в переменной $ _ затем добавьте .FirstName в его конец, например:
@{FirstName=Bill; LastName=Boxer; Age=52}.FirstName
Но когда вы добавите выражение $ () Вы говорите, запустите эту часть как код.
"Hello $($_.FirstName)"
Показывает
Hello Bill
Итак, давайте посмотрим на код, который вы опубликовали в комментариях (Пожалуйста, продолжайтеИмейте в виду, чтобы отредактировать свое сообщение и опубликовать его там, чтобы другие могли его прочитать.
Исходя из того, что я опубликовал выше, проблема заключается в том, что ваш CSV не является CSV.разделенные полуколониями.
Вам необходимо определить это в параметре для import-Csv -Delimiter ";"
Рабочий скрипт будет выглядеть так:
$path = "C:\Workspace\macros\FullReportPathMR.csv"
Import-CSV -Path $path -Delimiter ";" | %{
"$($_.sequence) $($_.reportsource) $($_.reportname) $($_.reportid) $($_.fullpath)"
}
вывод
1 Monthly Report MR1 3 C:\Workspace\macros\1.txt
2 Monthly Report MR2 6 C:\Workspace\macros\2.txt
3 Monthly Report MR3 9 C:\Workspace\macros\3.txt
4 Monthly Report MR4 12 C:\Workspace\macros\4.txt