Svi*_*ish 3 arrays powershell hashtable hashmap
给定一组键值对(例如通过 ConvertFrom-StringData 读入),是否有一种简化的方法可以将其转换为 Hashtable 或类似的以允许快速查找?即一种不需要我遍历数组并自己手动构建哈希表的方法。
示例数据
10.0.0.1=alice.example.com
10.0.0.2=bob.example.com
Run Code Online (Sandbox Code Playgroud)
示例用法
$names = gc .\data.txt | ConvertFrom-StringData
// $names is now Object[]
$map = ?
// $map should now be Hashtable or equivalent
echo $map['10.0.0.2']
// Output should be bob.example.com
Run Code Online (Sandbox Code Playgroud)
基本上我正在寻找的是一个,最好是内置的文件到哈希表的函数。或者一个数组到哈希表的函数。
注意:正如@mjolnior 所解释的,我实际上得到了哈希表,但是一个单值数组。所以这是通过读取文件来解决的-raw,因此不需要任何数组到哈希表的转换。更新了问题标题以匹配它。
Convertfrom-Stringdata 确实创建了一个哈希表。
您需要将键值对作为单个多行字符串(而不是字符串数组)提供给它
$map = Get-Content -raw .\data.txt | ConvertFrom-StringData
$map['10.0.0.2']
bob.example.com
Run Code Online (Sandbox Code Playgroud)
当你使用没有 -Raw 开关的 Get-Content 时,你给 ConvertFrom-StringData 一个单行字符串数组,它给你一个单元素哈希表数组:
$map = Get-Content .\data.txt | ConvertFrom-StringData
$map.gettype()
$Map[0].GetType()
$map[0]
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
True True Hashtable System.Object
Key : 10.0.0.1
Value : alice.example.com
Name : 10.0.0.1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5061 次 |
| 最近记录: |