2016-11-25 9 views
4

数値(すべての浮動小数値)を出力に丸めるコマンドレットはありますか?出力の丸めを行うコマンドレット

私は、次のコマンドを実行すると:

get-vm |select ProvisionedSpaceGB,UsedSpaceGB 

を私はテーブルとして、この出力を得る:

  ProvisionedSpaceGB     UsedSpaceGB 
      ------------------     ----------- 
1224,0003194380551576614379883 349,88938544876873493194580078 
1224,0003062393516302108764648 321,74483488313853740692138672 
502,80292716529220342636108399 74,052481059916317462921142578 
700,00035238638520240783691406 484,56624550372362136840820312 
800,0003144945949316024780273 322,26342210918664932250976562 

私は、私はこのようなselectコマンドレットのそれを定義することができることを承知しています:

get-vm | select @{ n="ProvisionedSpaceGB"; e={[math]::round($_.ProvisionedSpaceGB, 2)}}, 
    @{ n="UsedSpaceGB"; e={[math]::round($_.UsedSpaceGB, 2)}} 

次に、この出力を取得します。

ProvisionedSpaceGB UsedSpaceGB 
------------------ ----------- 
      1224,00  349,58 
      1224,00  320,32 
      502,80  74,05 
      700,00  484,57 
      800,00  322,26 

しかし、別のコマンドレットにそれをパイプのように、もっと簡単な方法がなければならない。第二の出力を取得するには

get-vm |select ProvisionedSpaceGB,UsedSpaceGB |RoundNumbers -Precision 2 

+0

私はドン」にそれはあると思いますが、あなたはそれのための独自のコマンドレットを作成することができます... – 4c74356b41

答えて

5

私はそこに疑問がしかし、ビルトインそのため PowerShellコマンドレットです - あなたは独自のフィルター書くことができます:

filter Round-FloatValues 
{ 
    Param(
     [parameter(ValueFromPipeline=$true)] 
     $objects, 

     [int]$Precision = 2   
    ) 

    $objects.PsObject.Properties | ForEach-Object { 
     if ($_.TypeNameOfValue -eq 'System.Double') 
     { 
      [math]::round($_.Value, $Precision) 
     } 
     else 
     { 
      $_.Value 
     } 
    } 
} 

用途:

get-vm |select ProvisionedSpaceGB,UsedSpaceGB |Round-FloatValues -Precision 2 
関連する問題