Я понимаю, что это очень часто задаваемый вопрос, однако ни одно из решений, которые работали в вопросах, которые я нашел, не сработало для меня. У меня есть сценарий powershell, который создает CSV-файл (с использованием нового элемента), а затем заполняет его четырьмя столбцами информации (используя add-content). Я хотел бы добавить к этому скрипту, чтобы добавить заголовок в .csv, чтобы я мог еще раз проанализировать его и отделить информацию по содержимому одного из столбцов, однако ничто из того, что я пробовал, работает. Я попытался использовать параметр -value, чтобы сделать первую строку csv заголовками, которые я хочу, которая работает, чтобы поместить заголовок в правильные столбцы, однако первая строка информации, которая добавляется через add-content, входит в строка заголовка. Пример:Добавить строку заголовка в .csv
Desired output:
Header | Header | Header | Header
Info | Info | Info | Info
Info | Info | Info | Info
Actual Output:
Header | Header | Header | Header | Info | Info | Info | Info |
Info | Info | Info | Info |
Я также попытался с помощью Import-CSV и добавить заголовок, путь, затем перенаправив вывод Export-CSV, однако это было возвращение пустой .csv каждый раз. Код я использовал для этого:
Import-Csv $file -header "Header,Header,Header,Header" |export-csv $file -notypeinformation
Я вижу это мне нужно, чтобы пропустить первую строку при надстройке содержания, однако я совершенно новый для PowerShell и не знаю, как сделать это. Я собираюсь в кругах об этом какое-то время, так что любой вклад будет очень оценен.
** EDIT **
Ответа на этот вопрос TheMadTechnician исправили вопрос, вставляя в настоящее время рабочий код за вторую половину своего ответа. Это относительно простой скрипт для разбора CSV, проверьте, есть ли идентификационный номер, если есть проверка на веб-сайт взлетов, если они доставлены депозит в CSV-файле, если депозит исключения доставки в другом формате CSV:
$file= import-csv "**FILEPATH**\Intransit_report.csv"
$newfile= New-Item "**FILEPATH**\$(get-date -format dd-MM-yyyy)_delivered.csv" -type file -force -value "Tag Number,Final Dest,Tracking ID,Attribute Ref #`n"
$exceptionfile= New-Item "**FILEPATH**\$(get-date -format dd-MM-yyyy)_delivery_exceptions.csv" -type file -force -value "Tag Number,Final Dest,Tracking ID,Attribute Ref #`n"
foreach ($i in $file) {
$tagnum= $i | select-object -expandproperty "Tag Number"
$trackingid = $i | select-object -expandproperty "Tracking ID"
$refnum= $i | select-object -expandproperty "Attribute Ref #"
$findest= $i | select-object -expandproperty "Final Dest"
if ($trackingid.length -gt 1){
$uri= "**URI**$trackingid"
$html= Invoke-Webrequest -URI $uri
$fields= $HTML.ParsedHtml
$trackstate= $fields.getElementByID("ttc_tt_spStatus")
if($trackstate.innerText -like "*Business Days*"){
break}
elseif($trackstate.innerText -like "Delivered*"){
"$tagnum, $findest, $trackingid, $refnum" | Add-Content $newfile
}
elseif($trackstate.innerText -like "*Attempt Made*"){
"$tagnum, $findest, $trackingid, $refnum" | Add-Content $exceptionfile
}
}
}
Почему сценарий должен использовать новый элемент или добавочный контент? Не можете ли вы использовать Export-Csv -Append? ИЛИ в прошлом я только что сохранил свои данные в переменной. Затем каждый раз, когда мой скрипт меняет что-то, я просто экспортирую исходный файл. –