gpt4 book ai didi

powershell - 如何将哈希表枚举为键值对/通过键值集合过滤哈希表

转载 作者:行者123 更新时间:2023-12-03 11:34:02 24 4
gpt4 key购买 nike

编者注:
这个问题有一个复杂的历史,但归结为:
* 学习如何 通过键值对枚举散列表的条目 ,见 the accepted answer .
* 学习如何 通过键值集合过滤哈希表 ,见 the other answer .


我想我又陷入了 X Y 问题,我最初的问题是关于过滤哈希表。我发现在创建哈希表之前过滤更容易。问题回答了,对吧?

不,Y 问题是循环每个键并使用 @briantist 帮助我解决的值。

我的目标是遍历键名,即时间戳,并使用键名作为任务名称和触发器来安排任务。

我正在使用 Group-Object -AsHashTable -AsString 从 CSV 文件创建哈希表 -edit,这里值得一提的是,在创建 HashTable 之前过滤 CSV 只会让 Pipeline 变得更容易。或脚本 .

举个例子:

Import-CSV (ls -path D:\ -Filter source*.csv | sort LastWriteTime | Select -Last 1).FullName |
where {$_.TimeCorrected -ne 'ManualRebootServer'} |
group TimeCorrected -AsHashTable -AsString

我正在尝试遍历键名并能够使用以下方式显示键名:
$var = Import-Csv csv123.csv | Group-Object Value1 -AsHashTable -AsString

foreach ($key in $var.Keys){"The key name is $key"}

#Create a scheduled task named and triggered based on the HashTable keyname
#test test test
foreach ($key in $var.keys){IF($key -ne 'ManualRebootServer'){"Register-ScheduledJob"}}

我只是不确定如何从我感兴趣的键中获取值。

我发现了以下作品,但只有当我手动输入 key 名称时。我只是不确定如何组合两个循环。
($val.GetEnumerator() | Where {$_.key -eq '06-11-16 18:00'} | ForEach-Object { $_.value }).Server

最佳答案

你在这里有一些选择。

通过键枚举:

foreach ($key in $var.Keys) {
$value = $var[$key]
# or
$value = $var.$key
}

枚举键值对(您已经发现,但可能没有有效使用):
foreach ($kvp in $var.GetEnumerator()) {
$key = $kvp.Key
$val = $kvp.Value
}

关于powershell - 如何将哈希表枚举为键值对/通过键值集合过滤哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37635820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com