2017-02-27 105 views
1

以下腳本旨在讀取$ServerName中的服務器列表以及$Myfiles中的文件列表,然後使用ImportExcel模塊將Select-Object條件導出到Excel。我遇到的問題是腳本循環遍歷2個文件,只輸出2個列表中最後一個服務器和文件的標準。使用Export-Excel管道foreach循環

如果我將Export-Excel更改爲Export-Csv C:\outputFile.csv -Append,該腳本按預期工作,並循環遍歷每個服務器上的每個文件並導出所有數據。這樣可以,但我更喜歡使用Export-Excel,所以我可以在我的報告中使用數據透視表和着色。

foreach ($server in Get-Content "C:\MyServers.txt") { 
    $ServerName = $server 
    foreach ($file in Get-Content "C:\MyFiles.txt") { 
     $Myfiles = $file 
     Get-ChildItem -Path \\$server\$Myfiles -Force -ErrorAction SilentlyContinue | 
      ForEach-Object { 
       try { 
        $_ | Add-Member NoteProperty ServerName $ServerName 
       } catch {} 
       $_ 
      } | 
      Select-Object ServerName, Name, LastWriteTime, Directory | 
      Export-Excel -Path C:\outputFile.xlsx 
    } 
} 

回答

2

整個輸出分配給一個變量,然後通過管道將到Export-Excel底:精湛:

$data = foreach ($ServerName in Get-Content "C:\MyServers.txt") 
{ 
    foreach ($Myfiles in Get-Content "C:\MyFiles.txt") 
    { 
     Get-ChildItem -Path \\$ServerName\$Myfiles -Force -ErrorAction SilentlyContinue |ForEach-Object { 
      try { 
       $_ | Add-Member NoteProperty ServerName $ServerName 
      } catch {} 
      $_ 
     } | Select-Object ServerName,Name,LastWriteTime,Directory 
    } 
} 

$data | Export-Excel -Path C:\outputFile.xlsx 
+0

通過4秒,@Mathias :) – TechSpud

+0

@Mathias投注我。 :) –

+0

@ MathiasR.Jessen:你超快。我們已經見過隊友了。 –