带条件的PowerShell switch语句

时间:2019-01-25 16:20:38

标签: powershell conditional

如何在PowerShell switch语句中使用条件?下面的这段代码应返回0时返回1000

$UsedSpaceMB = 8500

switch ($UsedSpaceMB) {
    ($UsedSpaceMB -gt 15000) { $FreeSpace = 2000 }
    ($UsedSpaceMB -in 8000..15000 ) { $FreeSpace = 1000 }
    ($UsedSpaceMB -in 1700..8000 ) { $FreeSpace = 500 }
    ($UsedSpaceMB -in 1000..1700 ) { $FreeSpace = 200 }
    ($UsedSpaceMB -in 800..1000 ) { $FreeSpace = 100 }
    ($UsedSpaceMB -lt 800 ) { $FreeSpace = 50 }
}
$FreeSpace

2 个答案:

答案 0 :(得分:2)

语法对于开关不正确。 请参阅here以获取文档。

$UsedSpaceMB = 8500

switch ($UsedSpaceMB) {
    {$_ -gt 15000} { $FreeSpace = 2000 }
    {$_ -in 8000..15000 } { $FreeSpace = 1000 }
    {$_ -in 1700..8000 } { $FreeSpace = 500 }
    {$_ -in 1000..1700 } { $FreeSpace = 200 }
    {$_ -in 800..1000 } { $FreeSpace = 100 }
    {$_ -lt 800 } { $FreeSpace = 50 }
}
$FreeSpace

答案 1 :(得分:1)

或者您可以使用-contains

switch ($UsedSpaceMB) {
    {$_ -gt 15000} { $FreeSpace = 2000 }
    {8000..15000 -contains $_ } { $FreeSpace =1000 }
    {1700..8000 -contains $_} { $FreeSpace = 500 }
    {1000..1700 -contains $_ } { $FreeSpace = 200 }
    {800..1000 -contains $_ } { $FreeSpace = 100 }
    {$_ -lt 800 } { $FreeSpace = 50 }
}
$FreeSpace