用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