用Export-Excelpipe道foreach循环

下面的脚本旨在读取$ServerName中的服务器列表和$Myfiles中的文件列表,然后使用ImportExcel模块将Select-Object条件导出到Excel。 我遇到的问题是脚本循环通过2个文件,只输出2个列表中的最后一个服务器和文件的标准。

如果我将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 } } 

将整个输出分配给一个variables,然后在最后将其输出到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