Оператор PowerShell с условными выражениями - PullRequest
0 голосов
/ 25 января 2019

Как включить условные выражения в оператор 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 голосов
/ 25 января 2019

или вы можете использовать -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
0 голосов
/ 25 января 2019

Синтаксис неверен для коммутатора.Пожалуйста, смотрите здесь для документации.

$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
...