Powershell foreach and export-csv doesn't work

Welcome Forums General PowerShell Q&A Powershell foreach and export-csv doesn't work

  • This topic has 1 reply, 2 voices, and was last updated 1 year ago by
    Senior Moderator
    .
Viewing 1 reply thread
  • Author
    Posts
    • #161841
      Participant
      Topics: 1
      Replies: 0
      Points: -3
      Rank: Member

      Hello Community

      I use powershell V3 and / or powershell V4 it’s been a few days since I’m on this issue but no solution so far.

      I explain, I have a vulgar powershell with an input file (list of servers) on which I wish to apply a treatment via a loop foreach and, retrieve the output in a csv.

      The loop seems to work however, on an input file of 100 lines only the last one is export (the previous occurrences are overwritten) why I do not know. I have already tried to readjust the script by adding variables for incrementation (see code if below) but without success.

      Can you help my to salve this case please?

      # Emplacement fichierSource
      $fileComputerNames = "E:\ReportXplanif\ServeursIUCR2K12.txt"
      # Write-Host $fileComputerNames
      # Emplacement fichierDestination
      $desti = "E:\ReportXplanif"
      # Write-Host $desti
      Foreach ($server in Get-Content $fileComputerNames) {
          $cmde = {Get-ScheduledTask | Where {$_.Principal.userid -eq "ZRES\XPLANIF"} | Get-ScheduledTaskInfo}
          Invoke-Command -ComputerName $server -ScriptBlock $cmde |
              Select @{LABEL = 'Serveur'; EXPRESSION = {$server}}, TaskName, LastRunTime, NextRunTime
      }
      Export-csv ($desti + "\XplanifTasks.csv") -Delimiter "," -NoTypeInformation
      # Emplacement fichierSource
      $fileComputerNames = "E:\ReportXplanif\ServeursIUCR2K12.txt"
      # Write-Host $fileComputerNames
       
      # Emplacement fichierDestination
      $desti = "E:\ReportXplanif\"
      # Write-Host $desti
       
      $cmde = @()
      Foreach ($server in Get-Content $fileComputerNames) {
       
         
          $cmde += {Get-ScheduledTask | Where {$_.Principal.userid -eq "ZRES\XPLANIF"} | Get-ScheduledTaskInfo}
          Invoke-Command -ComputerName $server -ScriptBlock $cmde |
              Select @{LABEL = 'Serveur'; EXPRESSION = {$server}}, TaskName, LastRunTime, NextRunTime
      }
         
      $cmde | Export-csv ($desti + "\XplanifTasks.csv") -Delimiter "," -NoTypeInformation
       
      
    • #161898
      Senior Moderator
      Topics: 9
      Replies: 1236
      Points: 4,443
      Helping Hand
      Rank: Community Hero

      Here is a generic example.

      Foreach($Server in $ServerList){
          [array]$Output += Invoke-Command -ComputerName $Server -ScriptBlock { Get-Process | Select-Object -First 4 }
      }
      
      #Another way, The output will get stacked in the variable.
      $Output  = Foreach($Server in $ServerList){
                    Invoke-Command -ComputerName $Server -ScriptBlock { Get-Process | Select-Object -First 4 }
                 }
      

      You don’t even need to use Foreach here. -computerName accepts array of computers, you can pass $FileComputerNames directly to -ComputerName parameter.

Viewing 1 reply thread
  • The topic ‘Powershell foreach and export-csv doesn't work’ is closed to new replies.