将PowerShell输出传递给CSV / Excel

时间:2016-11-28 12:53:07

标签: excel powershell csv export output

我之前曾问过一个问题,即将文件和文件夹添加到一个共同的名称,并将它们总计为总大小(Sum of file folder size based on file/folder name)。使用下面的PS脚本成功回答了这个问题:

$root = 'C:\DBFolder'
Get-ChildItem "$root\*.mdf" | Select-Object -Expand BaseName |
  ForEach-Object {
    New-Object -Type PSObject -Property @{
      Database = $_
      Size     = (Get-ChildItem "$root\$_*\*" -Recurse |
                 Measure-Object Length -Sum |
                 Select-Object -Expand  Sum  ) / 1GB
    } 
  }

现在这给我留下了一个默认情况下由'Database'属性排序的列表。我试图使用Sort-Object后缀来使用'Size'属性而没有任何乐趣。我还试图将Export-Csv用于混淆结果。

理想情况下,如果我可以将此脚本的结果传递给Excel / CSV,那么我可以在多个SQL Server上进行冲洗/重复并整理数据并在Excel中进行排序,我会一直笑到一个小的黑暗角落我可以睡觉的办公室。

为了清楚起见,输出结果如下:

Database                                             Size
--------                                             ----
DBName1                                              2.5876876
DBName2                                              4.7657657
DBName3                                              3.5676578

1 个答案:

答案 0 :(得分:0)

好吧,这是我在使用Export-csv函数时遗漏的一个管道角色。这解决了我的问题。

$root = 'C:\DB\Databases'
Get-ChildItem "$root\*.mdf" | Select-Object -Expand BaseName |
  ForEach-Object {
    New-Object -Type PSObject -Property @{
      Database = $_
      Size     = (Get-ChildItem "$root\$_*\*" -Recurse |
                 Measure-Object Length -Sum |
                 Select-Object -Expand  Sum  ) / 1GB
    } 
  } | Export-Csv 'C:\Test\test.csv'