在 Powershell 中将字符串转换为哈希表

Posted

技术标签:

【中文标题】在 Powershell 中将字符串转换为哈希表【英文标题】:Convert a String into a Hashtable in Powershell 【发布时间】:2021-12-30 09:45:55 【问题描述】:

我的要求有点特别,但很容易理解。

我得到了一个字符串,我想将其用作哈希表,但我做不到,我的格式非常特殊,例如使用 ConvertFrom-StringData 之类的方法没有成功。

格式预览:

@id = 04cc943e-14a8-4bf6-8601-bd6fde3cc229; name = 7.10 10-16 - 6.0 * * * * | 1 0 0 0; privileges =

因此,我希望能够访问name 属性的内容。 我在那里花了很多时间,但没有成功... 谢谢你的帮助

【问题讨论】:

向我们展示您的尝试。正如它所写的那样,我担心这篇文章可能会被关闭。 这次我做到了,以后请format your post properly。 格式是哈希表-like,仅用于显示[pscustomobject] 对象的字符串表示,如this answer 中所述。你真的只有字符串表示,而不是对象本身吗? 【参考方案1】:

因此您可以使用字符串解析并使用拆分和修剪的组合。

$text = "@id = 04cc943e-14a8-4bf6-8601-bd6fde3cc229; name = 7.10 10-16 - 6.0 * * * * | 1 0 0 0; privileges ="

#this is to get rid of @
$preparedText = $text.Substring(2,$text.Length-3)
$obj = @

foreach ($kv in $preparedText.Split(";"))  
    #Get key from string (which is "key = value")
    $key = $kv.Trim().Split("=")[0].Trim()
    Write-Host "Key = $key"
    #Get value from string
    $value = $kv.Trim().Split("=")[1].Trim()
    Write-Host "Value = $value"

    #Assign key-object pair to hashtable
    $obj[$key] = $value


Write-Host "obj.name = $($obj.name);`nobj.id = $($obj.id);`nobj.privileges = $($obj.privileges)"

返回:

obj.name = 7.10 10-16 - 6.0 * * * * | 1 0 0 0;
obj.id = 04cc943e-14a8-4bf6-8601-bd6fde3cc229;
obj.privileges =

【讨论】:

以上是关于在 Powershell 中将字符串转换为哈希表的主要内容,如果未能解决你的问题,请参考以下文章

PowerShell:如何在 PowerShell 中将数组对象转换为字符串?

powershell Powershell函数从文件中读取哈希表文本表示并将其转换为哈希表对象

如何在 PowerShell 中将 HashSet 转换为 ArrayList?

powershell 将剪贴板文本转换为哈希表

如何在 Perl 中将简单的哈希转换为 json?

在 Clojure 中将元组数组转换为哈希映射