2016-11-26 7 views
0

数百/数千のデータベースを含む多数のSQL Serverに複数のフォルダがあります。各データベースには3つの要素を含む:ファイル/フォルダ名に基づくファイルフォルダサイズの合計

<dbname>.MDF 
<dbname>.LDF 
<dbname>files (Folder that contains db files/attachments) 

私は一緒に、これらのファイルと結婚し、その合計サイズを追加する必要があり、誰もがこれを行う方法上の任意のアドバイスがありますか?

EDIT:私は現在、MDF/LDFファイルのファイルサイズを出力できますが、フォルダサイズを要約した別のスクリプトがあります。名前が一致すると.MDF/.LDF/DBFilesフォルダを一緒に追加する方法が必要です。すべてのファイルの前にデータベース名が付いていることに注意してください。

EDIT#2:これまでに与えられた2つのオプションは、問題なく.mdf/.ldfファイルを合計しますが、DBFilesフォルダのフォルダサイズは追加しません。誰もが同じ名前で始まるフォルダを含むようにこれらのスクリプトを修正する方法の入力を持っていますか?

まず提供されたスクリプト:

$root = 'C:\db\folder' 
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 
} 
} 

第二に提供されたスクリプト:

gci "c:\temp" -file -Include "*.mdf", "*.ldf" -Recurse | 
group BaseName, DirectoryName | 
%{new-object psobject -Property @{FilesAndPath=$_.Name; Size=($_.Group | gci | Measure-Object Length -Sum).Sum } } 

EDIT#3:アンスガー(下記)へ

おかげで、更新されたソリューションは、完全にトリックを行っています。最終的な解決策と質問更新:あなたは(拡張子なし)dirと名前のファイルによってSISEファイルデータベースの合計をしたい場合は

$root = 'C:\db\folder' 
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 
    } 
    } 
+0

[OK]をクリックします。わかりました。わかりました。私は現在、フォルダのすべてのコンテンツのファイルサイズを確認して出力することができます。私がこれらの結果で行うことができる必要があるのは、各データベースとそれに付随するファイルとを一致させ、それらを一緒に追加することです。 – KEW

+0

これらのファイル/フォルダは散在しているのですか、データベースごとにまとめられていますか? –

+0

これらはすべて1つのフォルダに保存されています。 – KEW

答えて

0

データベースフォルダーから.mdfファイルを列挙し、各ベース名のファイルとフォルダーを列挙します。

$root = 'C:\db\folder' 
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 
    } 
    } 
+0

このAnsgarをありがとうございました。素晴らしいもの。 – KEW

+0

こんにちはAnsgar、私は私が見ていた問題で私の質問を更新しました。 MDF/LDFファイルを一緒に追加しましたが、関連付けられたフォルダのサイズが削除されています。私はもともとそれが適切に計算されていると考えていたので、私は元々その答えを受け入れた。 – KEW

+0

@KEW 'Get-ChildItem'を実際にサブフォルダに再帰させるには、パスの式が' $ root \ $ _ * \ * 'である必要があります。私の答えを更新しました。 –

0

は、

gci "c:\temp" -file -Include "*.mdf", "*.ldf" -Recurse | 
group BaseName, DirectoryName | 
%{new-object psobject -Property @{FilesAndPath=$_.Name; Size=($_.Group | gci | Measure-Object Length -Sum).Sum } } 

それを試してModifiyインクルードが必要であればGCIなどが少し

+0

ありがとうございましたEsperento- – KEW

関連する問題