嗨,我有下面的代码,想知道使用switch语句替换它的最佳方法。此示例有4种可能的结果,但最终可能会导致20多个结果,并且如果语句变得混乱。

$Des = "C:\tools\"
$DListFiles = Get-ChildItem $Des -EA 0

IF((Test-Path $Des)-ne $false -and $DListFiles -eq $null){$DDE = 1}
ElseIF((Test-Path $Des)-ne $false -and $DListFiles -ne $null){$DDE = 2}
ElseIF((Test-Path $Des)-eq $false){$DDE = 3}
Else{$DDE = 4}

write-host "$DDE"

最佳答案

对于您发布的示例,我个人将使用嵌套的if来使逻辑更清晰:

If(Test-Path $Des){
    If($DListFiles -eq $null){
        $DDE = 1
    }Else{
        $DDE = 2
    }
}Else{
    If($DListFiles -eq $null){
        $DDE = 3
    }else{
        $DDE = 4
    }
}

顺便说一下,您编写的方式并没有提供我认为您想要的逻辑。我不相信您会得到$ DDE =2。如果我正确阅读了您发布的内容,则在下面发布逻辑表。同样,嵌套的If可以帮助解决问题。
Test-Path   $Dlist is Null      $DDE
TRUE            TRUE            1
FALSE           FALSE           3
TRUE            TRUE            4
FALSE           FALSE           3

08-26 13:47