将文件文本转换为哈希表并使用键读取值?

Converting file text to Hashtable and reading value using keys?

所以我有一个看起来像这样的文件:

A=www.google.com
B=www.yahoo.com

现在,我想将此文本文件转换为哈希表并使用键(即 A 或 B)读取值

这是我想出的:

$hash = Get-Content .\test.txt
$hash[1].Split('=')[1]

上面的脚本工作正常,除了我想使用键而不是数字

类似于:

$hash['B'].Split('=')[1]

您需要先将文件数据转换为散列table 对象。有几种方法可以将数据添加到 hashtable 对象。如果它们具有 key=value.

格式,则以下内容会将所有行转换为散列 table 值
$hash = [ordered]@{}
Get-Content test.txt | Foreach-Object {
    $key,$value = ($_ -split '=',2).Trim()
    $hash[$key] = $value
}

# Value Retrieval syntax
$hash.A
$hash['A']

如果要定位文件中的特定行,可以执行以下操作:

$hash = [ordered]@{}
$data = Get-Content test.txt
$temp = $data[1] -split '=' 
$hash[$temp[0]] = $temp[1]

# Value Retrieval Syntax
$hash.B
$hash['B']

从技术上讲,您可以使用两个命令转换文件数据,但顺序可能会有所不同。我不确定 ConvertFrom-StringData 是否再受欢迎。

$hash = Get-Content test.txt -Raw | ConvertFrom-StringData

# Value Retrieval Syntax
$hash.B
$hash['B']

第一个代码片段的输出:

Get-Content test.txt
A=www.google.com
B=www.yahoo.com

$hash = [ordered]@{}
Get-Content test.txt | Foreach-Object {
    $temp = ($_ -split '=').Trim()
    $hash[$temp[0]] = $temp[1]
}
$hash

Name                           Value
----                           -----
A                              www.google.com
B                              www.yahoo.com

$hash['B']
www.yahoo.com