【问题标题】:Passing PowerShell Output to CSV/Excel将 PowerShell 输出传递到 CSV/Excel
【发布时间】:2016-11-28 12:53:07
【问题描述】:

我之前曾问过一个问题,关于将具有共同名称的文件和文件夹加在一起并将它们与总大小相加 (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
    } 
  }

这给我留下了一个默认按“数据库”属性排序的列表。我试图使用Sort-Object 后缀来使用'Size' 属性而没有任何乐趣。我也尝试过使用Export-Csv,结果令人困惑。

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

为了清楚起见,输出看起来是这样的:

数据库大小
-------- ----
DBName1 2.5876876
DBName2 4.7657657
DBName3 3.5676578

【问题讨论】:

  • 您如何准确“尝试使用Sort-Object/Export-Csv”?显示您的代码以及实际和所需的输出。
  • 我已经回答了我的问题,我已经为脚本添加了 Export-csv 'Pathname\test.csv' 后缀,但没有在它之前添加管道符号。再次感谢。

标签: excel powershell csv export output


【解决方案1】:

好的,这是我在使用 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'

【讨论】:

    猜你喜欢
    • 2015-01-17
    • 2017-04-20
    • 2013-07-15
    • 2015-02-15
    • 1970-01-01
    • 2021-12-27
    • 2017-01-02
    • 1970-01-01
    • 2017-12-15
    相关资源
    最近更新 更多