и добро пожаловать в StackOverflow! Вы сделали хорошую попытку и допустили несколько мелких ошибок, поэтому давайте пройдемся по этому очень быстро. Начнем с блока Param()
. Это должен быть массив параметров, а не несколько вызовов Param()
. Так должно выглядеть так:
param(
$Vendor,
$Pages,
$Sender,
$Recipient
)
Это достаточно просто, двигаясь дальше. Командлет Export-Csv
ожидает получить объект со свойствами для экспорта, а не массив строк. Таким образом, мы можем сделать это одним из двух способов. Мы можем либо просто манипулировать строкой и выводить строку, либо мы можем создать объект и экспортировать его в csv. Мы будем go с последним, так как это то, что вы пытались, я думаю.
Сначала мы создаем объект:
$newRow = [PSCustomObject]@{
'Vendor'=$Vendor
'#Pages'=$Pages
'Sender'=$Sender
'Recipient'=$Recipient
}
Теперь, когда у нас есть объект, мы можем просто передайте это Export-Csv
именно так, как вы делали это раньше. Таким образом, законченный код выглядит так:
param(
$Vendor,
$Pages,
$Sender,
$Recipient
)
$newRow = [PSCustomObject]@{
'Vendor'=$Vendor
'#Pages'=$Pages
'Sender'=$Sender
'Recipient'=$Recipient
}
$newRow | Export-Csv -Append -path C:\Files\CSVFILE.CSV
Это то, что многие люди назвали бы «правильным способом» сделать это. Вы можете выполнить некоторые манипуляции со строками и просто прикрепить полученную строку к концу вашего файла, но это неразумно делать так, поскольку создание CSV - это нечто большее, чем просто объединение нескольких строк через запятую. Если вы полны решимости манипулировать строками, помните, что вам нужно экранировать кавычки, прежде чем заключать каждое значение в кавычки и объединять их запятыми.
param(
$Vendor,
$Pages,
$Sender,
$Recipient
)
$Line = '"{0}","{1}","{2}","{3}"' -f ($Vendor -replace '"','""'),($Pages -replace '"','""'),($Sender -replace '"','""'),($Recipient -replace '"','""')
$Line | Add-Content C:\Files\CSVFILE.CSV