在 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函数从文件中读取哈希表文本表示并将其转换为哈希表对象