Forum Discussion
How to add Export-Csv to a script
Hello !
I'm studying PowerShell and I'd like to add an Export-Csv command for a script. However I couldn't understand how to put this command in it.
Here the script :
$emplacement = "D:\DOCUMENTAIRE\"
$myFolders = @(
"File A",
"File B",
"File C",
"File D",
"File E",
"File F",
"File G",
"File H",
"File I",
"File J",
"File K",
"File L"
)
$nbDocuments=0
Write-Host "NUM;FOLDER;AGENCY;TYPE;DOMAIN;FILE"
For($i=0;$i -lt $myFolders.Length;$i++)
{
$files = Get-ChildItem -Path $emplacement$($myFolders[$i])
For($j=0;$j -lt $files.Length;$j++)
{
$explode_content = $files[$j].ToString().Split("_")
$nbDocuments++
Write-Host "$nbDocuments;$($myFolders[$i]);$($explode_content[0]);$($explode_content[1]);$($explode_content[2]);$($files[$j])"
}
}
Write-Host "---------------------------------"
Write-Host "Total documents : $nbDocuments"
Write-Host "---------------------------------"
cmd / c pause
Thank you for your help !
Math
Hello,
At the end of your for loop (within the loop) you would want to add your $file | export-csv... (line 32). As $files is being overwritten each time within the loop, you are going to only receive one output outside of the loop... Your last output which executes after your for loop.
I haven't tried your code personally, but typically when I export to CSV I create an object and export that as such.$object = New-Object -TypeName psObject $object | Add-member -MemberType NoteProperty -Name "Example" -value $variable $object | Export-Csv -Path $logFile -Force -Encoding ASCII -Append -NoTypeInformation
9 Replies
- SchnittlauchIron Contributor
Hi MP21260
You just need to pipe it "|" to take the data and give it to the next command, in your case export-csv
example
$test = @( "Test1", "test2" ) $test | export-csv C:\Users\Admin\Desktop\NameOfCSV.csv -delimiter ';'
Thats it.
Here is the official documentation:
- MP21260Copper Contributor
Hello Schnittlauch,
Thank you for replying ! I tried to put the export-csv in the code. However it could work.
Perhaps something more is missing.
Here the modified code :
$emplacement = "D:\DOCUMENTAIRE\" $myFolders = @( "File A", "File B", "File C", "File D", "File E", "File F", "File G", "File H", "File I", "File J", "File K", "File L" ) $nbDocuments=0 Write-Host "NUM;FOLDER;AGENCY;TYPE;DOMAIN;FILE" For($i=0;$i -lt $myFolders.Length;$i++) { $files = Get-ChildItem -Path $emplacement$($myFolders[$i]) For($j=0;$j -lt $files.Length;$j++) { $explode_content = $files[$j].ToString().Split("_") $nbDocuments++ Write-Host "$nbDocuments;$($myFolders[$i]);$($explode_content[0]);$($explode_content[1]);$($explode_content[2]);$($files[$j])" } } $files | export-csv C:\Users\Admin\Desktop\List.csv -delimiter ';' Write-Host "---------------------------------" Write-Host "Total documents : $nbDocuments" Write-Host "---------------------------------" cmd / c pause
Thank you again for your support.
- SchnittlauchIron ContributorHi MP21260
I'll be honest,
I have no idea what you are trying to do in line 18-30.
If you want, you can tell me the requirements you want to do with this script.
Best regards
Schnittlauch