gpt4 book ai didi

Powershell:过滤哈希表 - 并取回哈希表

转载 作者:行者123 更新时间:2023-12-02 22:14:45 24 4
gpt4 key购买 nike

使用 GetEnumerator 过滤 Hashtable 总是返回 object[] 而不是 Hashtable:

# Init Hashtable
$items = @{ a1 = 1; a2 = 2; b1 = 3; b2 = 4}
# apply a filter
$filtered = $items.GetEnumerator() | ?{ $_.Key -match "a.*" }
# The result looks great
$filtered
Name Value
---- -----
a2 2
a1 1
# … but it is not a Hashtable :-(
$filtered.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array

这个问题有很好的解决方案吗?

非常感谢任何帮助!,
亲切的问候,
汤姆

最佳答案

$filtered是一个字典条目数组。据我所知,没有单一的 Actor 或 Actor 。

你可以构造一个散列:

$hash = @{}
$filtered | ForEach-Object { $hash.Add($_.Key, $_.Value) }

另一个工作流程:
# Init Hashtable
$items = @{ a1 = 1; a2 = 2; b1 = 3; b2 = 4}

# Copy keys to an array to avoid enumerating them directly on the hashtable
$keys = @($items.Keys)
# Remove elements not matching the expected pattern
$keys | ForEach-Object {
if ($_ -notmatch "a.*") {
$items.Remove($_)
}
}

# $items is filtered

关于Powershell:过滤哈希表 - 并取回哈希表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35783222/

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