如何在 Get-CimInstance 中用 2-3 行将 TotalPhysicalMemory 转换为 GB?

问题描述 投票:0回答:1

我正在尝试使用 Get-CimInstance 获取计算机名称、型号、制造商和 RAM 大小,并稍后将其格式化为表格,而无需 TotalMemorySize,只有我的 RAM 表槽。 我所坚持的是将字节转换为 GB:

Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object Name, Manufacturer, Model, TotalPhysicalMemory,
@{
    Name = "RAM"
    Expression = {
        'GB'  ([math]::[int](TotalPhysicalMemory / 1024 / 1024 / 1024))
        }
Format-Table *
}
powershell scripting
1个回答
0
投票
  • 由于您使用的是 计算属性,并以 脚本块 (

    { ... }
    ) 作为其
    Expression
    条目值,因此必须使用 自动
    $_
    变量
    来引用输入对象在眼前;因此
    $_.TotalPhysicalMemory
    检索(当前)管道输入对象的
    .TotalPhyicalMemory
    属性值。

  • PowerShell 支持数字文字中的二进制乘数后缀,因此您可以使用

    1gb
    表示 1 gibibyte (
    [Math]::Pow(1024, 3)
    )。

  • 要在 PowerShell 中连接字符串,您需要

    +
    运算符(以字符串作为 LHS)。但是,对于更复杂的字符串格式,您可以使用
    -f
    格式运算符
    {0}
    指第一个 RHS 操作数,
    {0:F0}
    将其格式化为具有
    F
    位小数的浮点数 (
    0
    ),即有效地作为 整数

将所有内容放在一起:

Get-CimInstance -ClassName Win32_ComputerSystem | 
  Select-Object Name, Manufacturer, Model, TotalPhysicalMemory, @{
    Name = 'RAM'
    Expression = { '{0:F0}GB' -f ($_.TotalPhysicalMemory / 1gb) }
  } |
  Format-Table # format as table *for display only*
© www.soinside.com 2019 - 2024. All rights reserved.