Powershell中的人类可读字节脚本

时间:2014-04-08 09:54:16

标签: windows powershell scripting

我试图编写一个用户可以输入数字的脚本,脚本会将其转换为人类可读的字节。

这是我得到的:

# human-readable-byte.ps1

$ans = Read-Host
if ($ans -gt 1TB) {
Write-Host ($ans/1TB) "TB"
} elseif ($ans -gt 1GB) {
Write-Host ($ans/1GB) "GB"
} elseif ($ans -gt 1MB) {
Write-Host ($ans/1MB) "MB"
} elseif ($ans -gt 1KB) {
Write-Host ($ans/1KB) "KB"
} else {
Write-Host $ans "B"
}

我得到的问题是,2.0以下的所有内容都出现在B中,但结果却出现了结核病。为什么?似乎中间的一切都被忽略了。香港专业教育学院曾尝试以多种方式做到这一点,但无法让它发挥作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

PowerShell中的运算符将操作数转换为 left 操作数的类型。因此,在您的情况下,比较会将右侧的数字转换为字符串。因此-gt执行字符串比较。

您需要将$ans转换为正确的类型:

[long]$ans = Read-Host

或交换操作数:

if (1TB -lt $ans) ...