在管道属性powershell上进行数学运算

在管道属性powershell上进行数学运算,powershell,math,Powershell,Math,对属性做数学非常陌生。。。 我正在努力: Get-WMIObject win32_diskdrive -computer $poste | Add-Member -MemberType ScriptProperty -Name GB -Value {[int]($_.size/1GB)} -PassThru | select model, size,GB 我认为我的尺寸属性选择错误,因为我得到: model

对属性做数学非常陌生。。。 我正在努力:

Get-WMIObject win32_diskdrive -computer $poste | Add-Member -MemberType ScriptProperty -Name  GB -Value {[int]($_.size/1GB)} -PassThru |  select model, size,GB
我认为我的尺寸属性选择错误,因为我得到:

model                                            size GB
-----                                            ---- --
Corsair Neutron XTI SSD SCSI Disk Device 480101368320  0
ST350041 3AS SCSI Disk Device            500105249280  0

我做错了什么?谢谢

将其作为一个显式的ForEach对象:

Get-WMIObject win32_diskdrive  | %{Add-Member -Input $_ -MemberType ScriptProperty -Name  GB -Value {[int]($_.size/1GB)} -PassThru} |  select model, size,GB

将其作为显式ForEach对象执行:

Get-WMIObject win32_diskdrive  | %{Add-Member -Input $_ -MemberType ScriptProperty -Name  GB -Value {[int]($_.size/1GB)} -PassThru} |  select model, size,GB

您可以在select语句中使用
表达式
,以GB为单位计算大小

Ex:

Get-WMIObject win32_diskdrive -computer $poste  | Select  @{Label = "Model";Expression = {$_.Model}},
        @{Label = "Size";Expression = {"{0:N1}" -f($_.Size) }},
        @{Label = "Total Capacity (GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}} #This will devide size by 1gb

您可以在select语句中使用
表达式
,以GB为单位计算大小

Ex:

Get-WMIObject win32_diskdrive -computer $poste  | Select  @{Label = "Model";Expression = {$_.Model}},
        @{Label = "Size";Expression = {"{0:N1}" -f($_.Size) }},
        @{Label = "Total Capacity (GB)";Expression = {"{0:N1}" -f( $_.Size / 1gb)}} #This will devide size by 1gb

这个表达式稍微简单一点:

Get-WMIObject win32_diskdrive | select model, size,@{n="GB";e={[int]($_.size/1GB)}} 
而且它也很有效。


这个表达式稍微简单一点:

Get-WMIObject win32_diskdrive | select model, size,@{n="GB";e={[int]($_.size/1GB)}} 

它也可以工作。

很好的方法,但是我很困惑,0:N1和-f是什么?因为你没有改变Model/Size的属性,你可以正常选择它们:
Get WmiObject Win32\u DiskDrive-ComputerName$poste |选择Model,Size,@{Label=“GB”;Expression={[int]($.Size/1gb)}
-f是最合适的。0:N1是格式描述符。
“{0:N1}”-f
用于限制小数位数,例如将
465.759308338165
更改为
466
。这里使用它是因为结果没有被强制转换为
[int]
(这实现了相同的结果)。@JamesC。这不完全是一回事。{0:N1}将显示1个小数点。将其强制转换为[int]将不会。这也是一个好方法,但是我很困惑,0:N1和-f是什么?因为您没有更改模型/大小的属性,所以您可以正常选择它们:
Get WmiObject Win32\u DiskDrive-ComputerName$poste |选择模型,大小,@{Label=“GB”;Expression={[int]($\uu.Size/1gb)}
-f是最合适的。0:N1是格式描述符。
“{0:N1}”-f
用于限制小数位数,例如将
465.759308338165
更改为
466
。这里使用它是因为结果没有被强制转换为
[int]
(这实现了相同的结果)。@JamesC。这不完全是一回事。{0:N1}将显示1个小数点。将其强制转换为[int]则不会。而且,由于CIM是未来<代码>获取CimInstance CIM_DiskDrive |选择对象-属性模型,大小,@{n=“GB”;e={[int]($\.size/1GB)}并且,因为CIM是未来<代码>获取CimInstance CIM_DiskDrive |选择对象-属性模型,大小,@{n=“GB”;e={[int]($\u.size/1GB)}