PowerShell ForEach循环中可以有多个IN条件吗?

时间:2019-04-13 05:21:29

标签: powershell loops foreach hashtable

我在函数中有以下示例代码:

[array]$ARR = $null

foreach ($file in $fileTable.identical)
{
   [hashtable]$HT=@{
       'FileName' = $file.Name
       'AppName' = $file.App
       'GroupName' = $file.Group
       'Valid' = $true
   }
   $ARR += $HT
}
foreach ($file in $fileTable.removed)
{
   [hashtable]$HT=@{
       'FileName' = $file.Name
       'AppName' = $file.App
       'GroupName' = $file.Group
       'Valid' = $false
   }
   $ARR += $HT
}
foreach ($file in $fileTable.modified)
{
   [hashtable]$HT=@{
       'FileName' = $file.Name
       'AppName' = $file.App
       'GroupName' = $file.Group
       'Valid' = $false
   }
   $ARR += $HT
}

return $ARR

+3个其他$ fileTable。[properties]的foreach循环,其中'Valid'= $ false。

我不必重复多次代码,而是要做类似的事情:

foreach (($file in $fileTable.removed) -and ($file in $fileTable.modified))
{
   [hashtable]$HT=@{
       'FileName' = $file.Name
       'AppName' = $file.App
       'GroupName' = $file.Group
       'Valid' = $false
   }
}

因此,哈希表中唯一不同的变量将是$ value。 $ fileTable是一个pscustomobject,具有一些自定义属性,例如相同,已修改,已添加,已删除。

我知道我想在foreach循环中无法实现,但是我正在寻找一种类似的解决方案来减少代码行数。任何帮助,将不胜感激:)

谢谢!

1 个答案:

答案 0 :(得分:2)

结合您和PetSerAl的方法。

修改:包含了@mklement0的提示

transform