Cmdlet在输出中舍入数字

时间:2016-11-25 09:03:53

标签: powershell

是否有一个cmdlet可以对输出中的数字(所有浮点值)进行舍入?

当我运行以下命令时:

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 cmdlet中定义,如下所示:

 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

但是必须有一种更简单的方法,比如将它管道到另一个cmdlet中:

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

获得第二个输出。

1 个答案:

答案 0 :(得分:5)

我怀疑是否有内置的 PowerShell cmdlet,但是 - 您可以编写自己的过滤器:

func changeAttributeOfText() {
        let paragraphStyle =  NSMutableParagraphStyle()
        paragraphStyle.alignment = .left
        let font = UIFont.boldSystemFont(ofSize: 12)
        let attributes:Dictionary = [NSParagraphStyleAttributeName:paragraphStyle ,  NSFontAttributeName:font ]
        let attributeString:NSAttributedString = NSAttributedString(string: "HELLO", attributes: attributes)
        textLabel.setAttributedText(attributeString)
    }

<强>用法:

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
        }
    }
}