【发布时间】:2022-11-17 12:37:12
【问题描述】:
我有一个作业中使用的哈希表,每个 hash.key 都是一个作业名称:
$myhashtable = @{
'somelocation' = 'somevalue'
'otherlocation' = 'othervalue'
}
我针对一个函数运行哈希表,该函数是为哈希表中的每个对象运行的 Start-Job。
foreach ( $location in $myhashtable.GetEnumerator() )
{
SomeFunction
}
然后我得到停止工作的名称:
$joblist = Get-Job | Where-Object { $_.State -eq "Stopped" }
$joblist = $joblist.name
尝试对函数执行与上述相同的操作,但仅针对已停止的作业:
foreach( $location in $myhashtable.GetEnumerator() )
{
if $location.key matches an object in $joblist}(
do SomeFunction for those $location.keys)
}
我尝试了各种foreachif和where但无法命中。
谢谢!
【问题讨论】:
-
那么你想匹配
$Array,键还是值呢? IE。作业名称是数组键还是数组值? (挑剔:它实际上不是一个数组,而是一个Hashtable) -
“我已经尝试过各种 foreach if 和 where”,但您没有显示任何这些尝试。
-
就目前而言,您的问题尚不清楚。如果要获取从作业创建的数组,则需要先使用
receive-job。如果你想比较数组和/或对象,你可以使用Compare-Object。 -
另外请注意,哈希文字中不允许重复键,即您的
$Array。 -
@zett42 对我的术语混淆表示歉意,感谢您更正。我更新了帖子,以便更清楚地了解预期目标。
标签: arrays powershell foreach hashtable start-job