gpt4 book ai didi

powershell - 如何根据数字占位符将值转换为 KB、MB 或 GB?

转载 作者:行者123 更新时间:2023-12-02 23:00:41 25 4
gpt4 key购买 nike

我有以下

Import-Module SqlServer

$Analysis_Server = New-Object Microsoft.AnalysisServices.Server
$Analysis_Server.connect("$server")

$estimatedSize = $([math]::Round($($($Analysis_Server.Databases[$cube].EstimatedSize)/1024/1024),2))

这会为我生成以 MB 为单位的大小

我想对其进行增强,使其更易于用户阅读,尤其是对于两位数 MB 中的值

例如,有时我会得到 50.9 MB 的值,这很好。但其他一些值是 37091 MB3082.86 MB,我希望这样的值自动转换为 GB(37.09 GB,3.08 GB code> 分别),如果它们在 GB 范围内。

如果有不在 MB 范围内的值,它们应该以 KB 显示

0.78 MB 应该只是 780 KB

我怎样才能做到这一点?

最佳答案

这里还有另外两种格式化字节大小的方法:

1) 使用 switch()

function Format-Size() {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
[double]$SizeInBytes
)
switch ([math]::Max($SizeInBytes, 0)) {
{$_ -ge 1PB} {"{0:N2} PB" -f ($SizeInBytes / 1PB); break}
{$_ -ge 1TB} {"{0:N2} TB" -f ($SizeInBytes / 1TB); break}
{$_ -ge 1GB} {"{0:N2} GB" -f ($SizeInBytes / 1GB); break}
{$_ -ge 1MB} {"{0:N2} MB" -f ($SizeInBytes / 1MB); break}
{$_ -ge 1KB} {"{0:N2} KB" -f ($SizeInBytes / 1KB); break}
default {"$SizeInBytes Bytes"}
}
}

2) 通过执行一个循环,将给定的字节大小重复除以 1024

function Format-Size2 {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true, ValueFromPipeline = $true)]
[double]$SizeInBytes
)

$units = "Bytes", "KB", "MB", "GB", "TB", "PB", "EB"
$index = 0

while ($SizeInBytes -gt 1024 -and $index -le $units.length) {
$SizeInBytes /= 1024
$index++
}
if ($index) {
return '{0:N2} {1}' -f $SizeInBytes, $units[$index]
}

return "$SizeInBytes Bytes"
}

关于powershell - 如何根据数字占位符将值转换为 KB、MB 或 GB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57530347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com