使用Export-Excel管道foreach循环

时间:2017-02-27 15:51:19

标签: excel powershell

以下脚本用于读取$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
    }
}

1 个答案:

答案 0 :(得分: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