Jos*_*iah 4 powershell vmware rounding powercli vcenter
我正在使用VMWare的PowerCLI来运行此命令以从vCenter输出各种库存.
Get-VM | Select-Object Name,MemoryGB,NumCpu,UsedSpaceGB,@{n="TotalHDSizeGB"; e={(Get-HardDisk -VM $_ |Measure-Object -Sum CapacityGB).Sum}},@n="Network"; e={(Get-NetworkAdapter -VM $_ |Select -unique -expand NetworkName)}}Sort-Object Network|Export-Csv -Path vms.csv
Run Code Online (Sandbox Code Playgroud)
我想绕过UsedSpaceGB并列出所有NetworkName值,而不只是一个.我已经看到如何使用[Math] :: Round()来舍入脚本中的数字,但我无法在命令行中找到一个示例,我的尝试未能完成所需的结果.我怎么做?
尝试使用以下代替UsedSpaceGB:
@{ n="SpaceUsedGB"; e={[math]::round( $_.UsedSpaceGB, 3 )}}
Run Code Online (Sandbox Code Playgroud)
这将把UsedSpaceGB舍入到3个小数位并给该字段命名为SpaceUsedGB.要舍入到最接近的整数,请更改3为a 0,或者只使用:
@{ n="SpaceUsedGB"; e={[math]::round( $_.UsedSpaceGB )}}
Run Code Online (Sandbox Code Playgroud)
如果您不想将NetworkNames作为数组返回,而只是将其作为已排序的字符串,则可以将该表达式更改为:
@{n="Network"; e={(Get-NetworkAdapter -VM $_ | sort-object NetworkName | Select -unique -expand NetworkName) -join ', '}}
Run Code Online (Sandbox Code Playgroud)
因为我的TotalHDSizeGB在某些情况下也有一堆小数位,我的命令的最终版本如下所示:
get-vm | Select-Object Name, MemoryGB, NumCpu, @{ n="DiskUsedGB"; e={[math]::round( $_.UsedSpaceGB )}}, @{ n="TotalHDSizeGB"; e={[math]::round((Get-HardDisk -vm $_ | Measure-Object -Sum CapacityGB).Sum)}}, @{n="Network"; e={(Get-NetworkAdapter -VM $_ | sort-object NetworkName | Select -unique -expand NetworkName) -join ', '}} | Export-Csv -Path vms.csv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6199 次 |
| 最近记录: |