【问题标题】:Convert hashtable back to string data in efficient way以有效的方式将哈希表转换回字符串数据
【发布时间】:2020-07-06 19:36:03
【问题描述】:

我正在尝试以一种有效的方式将哈希表转换回键值对。目前我正在使用这个:

$kv = ""
$hash.GetEnumerator() | ForEach {
  $kv += "$($_.Name)=$($_.Value)"
}

有没有办法直接将哈希表转换为键值对,或者我的意思是字符串数据。有ConvertFrom-StringData 将键值对转换为哈希表。有没有相反的方法,直接将hash表转成键值对?

E.G(键值对)

a=1
b=2
c=3

【问题讨论】:

  • 散列表键值存储。你想创建一个字符串数组吗?一个JSON?还有什么?请编辑问题并显示所需的输出。
  • 这能回答你的问题吗? Does PowerShell support HashTable Serialization?
  • @vonpryz 我正在尝试创建键值对看看这个问题。
  • 没有内置方法,没有(如果“高效”是指“单线”;这里不应该关注运行时效率)。检查链接的问题以获取各种替代方案。由于需要牢记转义,为其编写函数并非完全简单。
  • 您应该将此类信息放在问题正文中,而不是添加 cmets。如果你继续在 cmets 中添加信息,任何阅读问题的人都会缺少很多细节。无论如何,你会期望一个带有换行符的字符串,而不是一个字符串数组?使用 StringBuilder。

标签: powershell hashtable enumeration keyvaluepair


【解决方案1】:

我为类似的question 推荐了这个脚本 cmdlet:

function ConvertTo-StringData {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory, Position = 0, ValueFromPipeline)]
        [HashTable[]]$HashTable
    )
    process {
        foreach ($item in $HashTable) {
            foreach ($entry in $item.GetEnumerator()) {
                "{0}={1}" -f $entry.Key, $entry.Value
            }
        }
    }
}

例子:

ConvertTo-StringData $hash 
# or
$hash | ConvertTo-StringData

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2018-11-08
    • 2012-12-12
    • 2015-02-06
    • 1970-01-01
    相关资源
    最近更新 更多