是否有一个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
获得第二个输出。
答案 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
}
}
}