我在函数中有以下示例代码:
[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
为其他 $fileTable.[properties] 增加 3 个 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 循环中是不可能的,但我正在寻找类似的解决方案来减少代码行数。任何帮助,将不胜感激 :)
谢谢!
结合您和PetSerAl的方法。
编辑:合并@mklement0的提示
$ARR = foreach($Variant in 'identical', 'removed', 'modified'){
$fileTable.$Variant | ForEach-Object{
[PSCustomObject]@{
'FileName' = $_.Name
'AppName' = $_.App
'GroupName' = $_.Group
# 'Valid' = if($Variant -eq 'identical'){$True} else {$False}
'Valid' = $Variant -eq 'identical'
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句