Powershellで、$ size変数をバイトからGBギガバイトに変換したいと思います。それを行うための最良の方法は何ですか?これまでのところ、次のスクリプトがあります。
$dir = "C:\Users\student"
$count = @{}
$size = @{}
$hostname = @{}
gci $dir -recurse |%{
[int]$count[$_.extension] += 1
[int64]$size[$_.extension] += $_.length
}
$results = @()
$count.keys | sort |% {
$result = ""|select extension,count,size,hostname
$result.extension = $_
$result.count = $count[$_]
$result.size = $size[$_]
$result.hostname = $(get-content env:computername)
$results += $result
}
$results | ft -auto
$results | sort-object -property size -Descending | select-object -first 30| export-csv c:\"$env:computername-$(get-date -f dd-MM-yyyy-HH-mm)".csv
それにはトリックがあります
$result.size = $size[$_] /1Gb
結果の表示を改善したい場合は、切り捨てることができます
$result.size = [math]::round($size[$_] /1Gb, 3)
Sqladminからの回答に別のヒントを追加します。
オブジェクトがbyesに格納されている場合、[math]::round($size[$_] /1Gb, 3)
は機能します。別のユニットに格納されている場合(たとえば、 Database.Sizeプロパティ は[〜#〜] mb [〜#〜 ])次に、測定単位を掛けてGBで割ることができます。したがって、MB単位の場合:@{Name="Size(GB)";Expression={[math]::round($_.size*1MB/1GB,4)}}
。
それが役に立てば幸い。
基本的な答えは[grin]ですが、これは情報を収集/処理/収集/出力するためのさまざまな方法です。
-AsHashTable
のGroup-Object
パラメータを使用して、拡張ルックアップテーブルを作成します。次に、キーを繰り返し処理し、空白の拡張子キーをフィラー名に置き換え、ファイルサイズを計算し、[PSCustomObject]
を作成して、最後にコレクションに送信します。
$SourceDir = $env:TEMP
# the "-Force" parameter includes the hidden & system files
# without = 503 files
# with = 535 files
$FileList = Get-ChildItem -LiteralPath $SourceDir -File -Recurse -Force
$FileTypesTable = $FileList |
Group-Object -AsHashTable -Property Extension
$TypeInfo = foreach ($FTT_Item in $FileTypesTable.Keys)
{
$Extension = @('_No_Ext_', $FTT_Item)[[bool]$FTT_Item]
$Size_Bytes = ($FileTypesTable[$FTT_Item].Length |
Measure-Object -Sum).Sum
[PSCustomObject]@{
Extension = $Extension
Count = $FileTypesTable[$FTT_Item].Count
Size_GB = [math]::Round($Size_Bytes / 1GB, 4)
#Size_Bytes = $Size_Bytes
}
}
$TypeInfo |
Sort-Object -Property Size_GB -Descending
出力.。
Extension Count Size_GB
--------- ----- -------
.msi 1 0.2637
.exe 35 0.1568
.wmv 4 0.0978
.mp3 12 0.0647
.log 142 0.0579
.Zip 3 0.0454
.jpg 32 0.0217
.csv 67 0.0044
.xpi 1 0.0031
.txt 116 0.0026
_No_Ext_ 7 0.0023
.part 1 0.0023
.ico 24 0.0001
.bat 18 0
.m3u8 1 0
.json 1 0
.xls 8 0
.ps1 1 0
.js 1 0
.xml 4 0
.mp4 8 0
.ani 1 0
.ini 25 0
.tmp 21 0
.bmp 1 0