我有一系列文件需要添加到作业队列中之前进行过滤。该作业队列将文件类型用作函数的参数。我当前正在使用的是:

 foreach ($currentFile in $ListOfTestFiles)
 {
    if ($currentFile.Name.Contains("Test1"))
    {
        $ParameterSet="Type1,$SomeOtherVariable"
    }
    if ($currentFile.Name.Contains("Test2"))
    {
        $ParameterSet="Type2,$SomeOtherVariable"
    }
    if ($currentFile.Name.Contains("Test3"))
    {
        $ParameterSet="Type3,$SomeOtherVariable"
    }
    if ($currentFile.Name.Contains("Test4"))
    {
        $ParameterSet="Type4,$SomeOtherVariable"
    }

    $JobArray += Start-Job -ScriptBlock $func -ArgumentList $ParameterSet
    $JobArray | Receive-Job -Wait
 }

有没有一种方法可以通过switch语句来减少这种情况?

最佳答案

foreach($currentFile in $listOfTestFiles)
{
    switch -wildcard ($currentFile.Name)
    {
        "*Test1*" {$ParameterSet="Type1,$SomeOtherVariable"}
        "*Test2*" {$ParameterSet="Type2,$SomeOtherVariable"}
        "*Test3*" {$ParameterSet="Type3,$SomeOtherVariable"}
        "*Test4*" {$ParameterSet="Type4,$SomeOtherVariable"}
        default {"Default Behaviour"}
    }
    $JobArray += Start-Job -ScriptBlock $func -ArgumentList $ParameterSet
    $JobArray | Receive-Job -Wait
}

请注意,我没有测试此代码,但是我遵循了here的Microsoft示例

关于powershell - 具有Name.Contains的Powershell开关语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38460791/

10-11 22:53
查看更多