我正在尝试使用 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 *
}
{ ... }
) 作为其 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*