能否在PowerShell属性中指定单位?
我正在使用PowerShell测量网络吞吐量。我的程序的最后一行是: [pscustomobject][ordered]@{Endpoint=$ip;Time=$timeinmillizes;Bytes=$totalBytes;Rate=[math]::Round$totalBytes/$timeinmillizes} 这将返回如下输出:能否在PowerShell属性中指定单位?,powershell,Powershell,我正在使用PowerShell测量网络吞吐量。我的程序的最后一行是: [pscustomobject][ordered]@{Endpoint=$ip;Time=$timeinmillizes;Bytes=$totalBytes;Rate=[math]::Round$totalBytes/$timeinmillizes} 这将返回如下输出: Endpoint Time Bytes Rate -------- ---- ----- ---- 127.0.0.1
Endpoint Time Bytes Rate
-------- ---- ----- ----
127.0.0.1:9381 15 8388608 559241
是否有一种方法可以提示用户时间和速率的单位是多少?我认为答案是否定的,这就解释了为什么像Get-Date这样的命令会有带有直观名称的字段,比如Get-Date.Second
我不想传递难以键入的难看的属性名称。例如,[pscustomobject][ordered]@{Endpoint=$ip;Time=$timeinmillizes;Bytes=$totalBytes;Rate KB/sec=[math]::Round$totalBytes/$timeinmillizes};工作并产生所需的输出
Endpoint Time Bytes Rate (KB/sec)
-------- ---- ----- -------------
127.0.0.1:9405 9 8388608 932068
但现在像Select和whereobject这样的操作变得杂乱无章。如果要将自定义对象保存为$x,则必须使用$x访问速率字段。'rate KB/sec'。同样,我认为没有办法做到我想要的,我应该重新考虑我的方法。您可以使用添加一个名为Rate的别名属性,它指向更混乱的速率KB/sec:
然后,用户可以使用凌乱的版本进行显示,使用整洁的版本进行脚本编写:
$object.Rate
1024
要查看常见cmdlet中别名属性的示例,只需查看Get进程的属性:
您可以使用添加一个名为Rate的别名属性,该属性指向更混乱的速率KB/sec:
然后,用户可以使用凌乱的版本进行显示,使用整洁的版本进行脚本编写:
$object.Rate
1024
要查看常见cmdlet中别名属性的示例,只需查看Get进程的属性:
如果您希望此新标题仅用于在屏幕上显示,也可以简单地以不同的方式输出对象,而无需更改原始标题:
$object = [PsCustomObject]@{
Endpoint = $ip
Time = $timeInMilliseconds
Bytes = $totalBytes
Rate = [math]::Round(($totalBytes / $timeInMilliseconds))
}
$object | Format-Table -Property Endpoint, Time, Bytes,
@{Name = 'Rate (KB/sec)'; Expression = { $_.Rate }} -AutoSize
将在控制台上显示为
如果您希望此新标题仅用于在屏幕上显示,也可以简单地以不同的方式输出对象,而无需更改原始标题:
$object = [PsCustomObject]@{
Endpoint = $ip
Time = $timeInMilliseconds
Bytes = $totalBytes
Rate = [math]::Round(($totalBytes / $timeInMilliseconds))
}
$object | Format-Table -Property Endpoint, Time, Bytes,
@{Name = 'Rate (KB/sec)'; Expression = { $_.Rate }} -AutoSize
将在控制台上显示为
顺便说一句,将哈希表强制转换为[pscustomobject]永远不需要[ordered],这是一种隐含的语法糖。只需使用不包含任何问题字符(如空格)的道具名称即可。[grin]ex=KB_PerSecAs将哈希表强制转换为[pscustomobject]时不需要[ordered]旁白-这是隐含的语法糖。只需使用不包含任何问题字符(如空格)的道具名称即可。这是一个很好的解决办法。最后,我得到了名为Rate和Rate KB/sec的字段,这在查看对象时有点难看,但它直接满足了我的需要:既能操作一个单词的变量,又能在较长的描述中单独查看其单位。@WilliamJohnHolden,您可以使用Format Table仅显示输出中所需的字段,或者,您可以完全打开并使用自定义文件创建自己的默认显示。这是一个很好的解决方案。最后,我得到了名为Rate和Rate KB/sec的字段,这在查看对象时有点难看,但它直接满足了我的需要:既能操作一个单词的变量,又能在较长的描述中单独查看其单位。@WilliamJohnHolden,您可以使用Format Table仅显示输出中所需的字段,或者,您可以完全打开并使用自定义文件创建自己的默认显示。
Endpoint Time Bytes Rate (KB/sec)
-------- ---- ----- -------------
127.0.0.1:9405 9 8388608 932068