0

以下は、ディスク容量をチェックするためのコードです。

$disks = Get-WmiObject -ComputerName WDSMS01 -Namespace root\cimv2 -Query "Select * from Win32_LogicalDisk where DriveType=3"

$disks.DeviceID
$dsql01 = @()

foreach($db in $disks)
{
    $dsql = New-Object PSObject
    $dsql | Add-Member -MemberType NoteProperty -Name "Drive Name" -value $db.DeviceID
    $dsql | Add-Member -MemberType NoteProperty -Name "Total Space(GB)" -value ($db.Size/1GB)
    $dsql | Add-Member -MemberType NoteProperty -Name "Free Space(GB)" -value ($db.FreeSpace/1GB)
    $dsql01 += $dsql
}

$dsql01

小数点以下2桁に制限することはできますか?また、空き領域を%形式で計算する別の列を追加します。

ありがとう。

4

3 に答える 3

6

これは、正確に何が必要かによって少し異なります。を使用[Math]::Roundして、2 桁の後のすべてを四捨五入できます。

[Math]::Round($db.Size/1GB, 2)

しかし、2 桁未満の数字の後に 0 が続くと、たとえば14.6、表で見栄えがよくない場合があります。

もう 1 つのオプションは、数値をフォーマットすることです。

($db.Size/1GB).ToString('0.00')

これは常に同じ 10 進数の桁数を使用しますが、結果は文字列になるため、それ以上の計算の実行が妨げられる可能性があります。

2 番目の質問については、実際には些細なことですが、別のAdd-Member呼び出しを追加するだけです。

$dsql | Add-Member NoteProperty 'Free Space (%)' (100*$db.FreeSpace/$db.Size)

New-Objectまた、(PowerShell v2 では) これらすべてを 1 回の呼び出しに入れることもできます。

$dsql = New-Object PSObject -Property @{
    'Drive Name' = $db.DeviceID
    'Total Space (GB)' = $db.Size / 1GB
    'Free Space (GB)' = $db.FreeSpace / 1GB
    'Free Space (%)' = 100 * $db.FreeSpace / $db.Size
}

foreachループは PowerShell 風ではありません。これをパイプラインで書き直してみましょう。

$disks = Get-WmiObject -ComputerName WDSMS01 -Namespace root\cimv2 -Query "Select * from Win32_LogicalDisk where DriveType=3"
$disks.DeviceID
$dsql01 = $disks | ForEach-Object {
    New-Object PSObject -Property @{
        'Drive Name' = $_.DeviceID
        'Total Space (GB)' = $_.Size / 1GB
        'Free Space (GB)' = $_.FreeSpace / 1GB
        'Free Space (%)' = 100 * $_.FreeSpace / $_.Size
    }
}
于 2013-01-23T13:57:39.517 に答える
1

フォーマッターの例を使用します。

PS>"{0:N2}" -f (11531055554 /1GB)
10,74

パーセントを取得するには:

 $pfree=$dsql.free *100 /$dsql.total
 $dsql| Add-Member -MemberType NoteProperty -Name "pFree" -value $pfree
于 2013-01-23T13:54:14.223 に答える
0

これを試して:

-value ("{0:0.00}" -f ($db.Size/1GB))

-value ("{0:0.00}" -f ($db.FreeSpace/1GB))

于 2013-01-23T14:04:55.537 に答える