我之前曾问过一个问题,即将文件和文件夹添加到一个共同的名称,并将它们总计为总大小(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
答案 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'