2016-04-14 12 views
1

初心者向けのPowerShellコースを受講しています。インストラクターは、助けを求める際には全く役に立たないです。私がやろうとしているのは、コンピュータに.doc、.docx、.xls、または.xlsxファイル拡張子で終わるファイルを検索することです。 "File_Summary.txt"というテキストファイルにファイル名とサイズ(ファイル拡張子でグループ化して)を出力します。出力はまた、各ファイル拡張子の合計ファイル数と合計ファイルサイズで終わる必要があります。これまでに作成したコードは次のとおりです。Powershell Count各ファイル拡張子の合計ファイルサイズを含むファイル拡張子

$path = ".\" 
$destination = "C:\Users\StayPositibve\Desktop\pleasework1.txt" 

$results = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"} | Select-Object Name, Extension, @{Name="Kbytes";Expression={ "{0:N0}" -f ($_.Length/1Kb) }} 
$results | Sort-Object -Property extension | Out-File $destination 
$countFiles = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"} 
$countFiles | Group-Object -Property extension | Out-File $destination -Append 

コードは実行されます(ただし、ひどいコーディングだとは思いますが)。しかし、私は各エクステンションの合計ファイルサイズを一緒に加える方法を理解できません。私は各エクステンションの合計ファイル数を持っていますが、サイズの合計ではありません。誰でも私を与えることができる任意のおかげで、ありがとう!

+0

私はあなたがループなしできちんとしたオプションを持っているとは思わない。私が考えることのできる最もクリーンなのは、 'Group-Object -Property Extension'を使ってそれを変数に格納し、' $ store | ForEach {$ _。名前; $ _。グループ| Measureオブジェクト - サムプロパティー長| -ExpandProperty Sum}を選択し、それが何であるかを見て、それをファイルに追加します。 (また、何かをする前に初めて基本的なGet-ChildItem呼び出しの結果を保存してから、結果を再利用し、ファイル数を再度検索するまで待つ必要はありません)。 – TessellatingHeckler

答えて

1

TessellatingHecklerが提案したようにMeasure-Objectを使用します。これは、あなたが達成しようとしているものでしょう:私は$resultsを再利用

$path = ".\" 
$destination = "C:\Users\StayPositibve\Desktop\pleasework1.txt" 

$results = Get-ChildItem .\* -Recurse | where {$_.extension -in ".doc",".docx",".xls",".xlsx"} | Select-Object Name, Extension, @{Name="Kbytes";Expression={ "{0:N0}" -f ($_.Length/1Kb) }} 
$results | Sort-Object -Property extension | Out-File $destination 
$results|group extension|select Count,Name,@{l='Total KB';e={$_.Group | Measure-Object -Property kbytes -Sum|select -expand sum}}| Out-File $destination -Append 

を、そしてあなたのようなグループはやったが、その後、私は、各Measure-Objectでグループ化の合計サイズを取得し、新しいプロパティを追加するためにSelectを使用しますパイプはSelect -Expand Sumになります。

+0

お手数ですが、TheMadTechnicianとTessellatingHecklerに感謝します。あなたのコードを見ると、$結果だけを使用するのではなく、同じプロセスを行った2つの変数をどこに作成したのか分かります。私はこれで新しいので、私はゆっくりとそこに着いていることがうれしいです。再度、感謝します! –

関連する問題