首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell -如何将大小单位表示为变量

PowerShell -如何将大小单位表示为变量
EN

Stack Overflow用户
提问于 2021-03-01 01:43:37
回答 3查看 76关注 0票数 1

我想为计算磁盘容量时使用的单位大小设置一个变量,比如GB或TB。这是我的工作示例:

代码语言:javascript
复制
$SourceDriveLetter = "C"
$SourceDrive = Get-Volume -DriveLetter $SourceDriveLetter
$SourceCapacity = [math]::Round(($SourceDrive.Size/1TB),2)
$SourceCapacity
0.42

我想要这样设置,这样我就可以很容易地从TB更改为GB。我在其他地方的电子邮件报告中使用$Unit。

代码语言:javascript
复制
$SourceDriveLetter = "C"
$Unit = "TB"
$UnitCalc = 1 * [int]$Unit
$SourceDrive = Get-Volume -DriveLetter $SourceDriveLetter
$SourceCapacity = [math]::Round(($SourceDrive.Size/$UnitCalc),2)
$SourceCapacity

我知道$Unit从一开始就是一个字符串,不确定如何用$UnitCalc中的数学计算将其表示为文字。任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-01 16:47:31

PowerShell已经识别出像这样的速记

..。如果您有排除引号并包含

那么你的代码已经可以工作了。

代码语言:javascript
复制
$SourceDriveLetter = "C"
$Unit = 1TB
$SourceDrive = Get-Volume -DriveLetter $SourceDriveLetter
$SourceCapacity = [math]::Round(($SourceDrive.Size/$Unit),2)
$SourceCapacity

PS > .\Stack Overflow Demo.ps1
0.91

PS > $SourceDrive.Size / 1GB
930.528869628906
票数 1
EN

Stack Overflow用户

发布于 2021-03-01 04:13:04

如果您事先知道所有单位,则只需使用切换表达式将字符串转换为适当的值:

代码语言:javascript
复制
$Unit = "TB"
$UnitCalc = switch($Unit) {
  "MB" { 1MB }
  "GB" { 1GB }
  "TB" { 1TB }
  default { throw "unhandled unit '$Unit'" }
}

$capacity = 20TB / $UnitCalc # gives 20

如果不需要错误处理,可以使用哈希表减少到一行,但请注意,这给出了

对于未知的单位大小:

代码语言:javascript
复制
$UnitCalc = @{ "MB" = 1MB; "GB" = 1GB; "TB" = 1TB }[$Unit]
票数 2
EN

Stack Overflow用户

发布于 2021-03-01 10:29:56

那么决定使用的最佳大小的代码呢?

代码语言:javascript
复制
Clear-Host 

$Size = 22373741824

#Updated per MClayton's suggestion, Thanks! 
$Unit = Switch ($Size) {
          {$Size -gt 1PB} { 'PB' ; Break }
          {$Size -gt 1TB} { 'TB' ; Break }
          {$Size -gt 1GB} { 'GB' ; Break }
          {$Size -gt 1Mb} { 'MB' ; Break }
          Default         { 'KB'         }
        }

"Unit is: $unit"

$SourceCapacity = [math]::Round(($Size/$("1"+$Unit)),2)

"Source Drive capacity is: $SourceCapacity $Unit"

当然,您将用检索到的值变量替换测试变量$Size,并删除调试输出语句。

HTH

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66412087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档