【问题标题】:Convert a String into a Hashtable in Powershell在 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 中所述。你真的只有字符串表示,而不是对象本身吗?

标签: string powershell hashtable


【解决方案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 =

【讨论】:

    猜你喜欢
    • 2018-07-18
    • 2014-09-04
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 2010-11-05
    • 2016-10-21
    相关资源
    最近更新 更多