如何将PowerShell文件中的Here-String解析为哈希表?
PowerShell 从Here-String或文件生成哈希表
直接用Here-String转哈希表
直接定义Here-String,再通过ConvertFrom-StringData转成哈希表,一步到位:
# 定义Here-String,每行是键值对 $hereString = @" Key1 = Value1 Key2 = Value2 Key3 = 带空格的Value3 "@ # 转换为哈希表 $hashTable = $hereString | ConvertFrom-StringData # 输出验证结果 $hashTable
运行后就能得到结构正确的哈希表,键值对一一对应。
从文件读取并转哈希表
如果键值对存在hash.txt文件里(文件内容就是纯键 = 值的行,不用加Here-String的@"和"),这么处理:
最简单的方式
用Get-Content的-Raw参数把整个文件读成一个字符串,和直接定义的Here-String效果一样,直接转:
$fileHash = Get-Content -Path "hash.txt" -Raw | ConvertFrom-StringData
带过滤的方式(处理空行/注释)
如果文件里有空行或者以#开头的注释,先过滤再转:
# 读取文件,过滤空行和注释行,再合并成单字符串 $cleanContent = Get-Content -Path "hash.txt" | Where-Object { $_ -match '^\s*[^#\s]' } | Out-String $fileHash = $cleanContent | ConvertFrom-StringData
注意:文件里的键值对格式要和Here-String里的一致,值里有特殊字符的话,用反引号`转义就行。
内容的提问来源于stack exchange,提问作者Nicholas Saunders
相关产品推荐
相关产品推荐

