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