web-dev-qa-db-ja.com

Powershellで$ size変数をバイトからGBに変換する方法は?

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
5
Gazel

それにはトリックがあります

$result.size = $size[$_] /1Gb

結果の表示を改善したい場合は、切り捨てることができます

$result.size = [math]::round($size[$_] /1Gb, 3)

http://technet.Microsoft.com/en-us/library/ee692684.aspx

14
sqladmin

Sqladminからの回答に別のヒントを追加します。

オブジェクトがbyesに格納されている場合、[math]::round($size[$_] /1Gb, 3)は機能します。別のユニットに格納されている場合(たとえば、 Database.Sizeプロパティ[〜#〜] mb [〜#〜 ])次に、測定単位を掛けてGBで割ることができます。したがって、MB単位の場合:@{Name="Size(GB)";Expression={[math]::round($_.size*1MB/1GB,4)}}

それが役に立てば幸い。

基本的な答えは[grin]ですが、これは情報を収集/処理/収集/出力するためのさまざまな方法です。

-AsHashTableGroup-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
0
Lee_Dailey