【发布时间】:2019-09-03 20:22:23
【问题描述】:
我在函数中有以下示例代码:
[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 循环中是不可能的,但我正在寻找一种类似的解决方案来减少代码行数。任何帮助将不胜感激:)
谢谢!
【问题讨论】:
-
$ARR = @('identical', 'removed', 'modified' | % { $fileTable.$_ } | % { @{ 'FileName' = $_.Name; 'AppName' = $_.App; 'GroupName' = $_.Group; 'Valid' = $false } })
标签: powershell loops foreach hashtable