函数中有以下示例代码:
[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循环中是不可能的,但是我正在寻找一个类似的解决方案来减少代码行数。如能提供任何帮助,将不胜感激:)
谢谢!
发布于 2019-04-13 06:14:16
结合您和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'
}
}
}https://stackoverflow.com/questions/55662301
复制相似问题