Forum Discussion

MP21260's avatar
MP21260
Copper Contributor
Feb 02, 2022
Solved

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

    • MP21260's avatar
      MP21260
      Copper 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.

       

      • Schnittlauch's avatar
        Schnittlauch
        Iron Contributor
        Hi 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

Resources