我正在尝试将PowerShell这里的字符串转换为Json文件。这是我需要转换的样本大小。我需要转换几十个覆盖文件,这可能是相当长的,手动做这不是我想要的方式完成这一点。
$a = @'
override['abc_os_config']['local_administrators']['default_administrators']['abc.com'] = %w {}
override['abc_os_config']['local_administrators']['default_administrators']['devad.abc.com'] = %w {}
override['abc_os_config']['local_administrators']['default_administrators']['qad.abc.com'] = %w {}
override['CIS_Remediation_Windows']['security_options']['lanman_authentication_level'] = 3
'@
$b = $a.Replace('override', '').Replace("'", '').Replace('[', '\').Replace(']', '').Replace(' =',':')
$b.Split('\') | ConvertTo-Json -Depth 100
生成的内容:
[
"",
"abc_os_config",
"local_administrators",
"default_administrators",
"abc.com: %w {}\n",
"abc_os_config",
"local_administrators",
"default_administrators",
"devad.abc.com: %w {}\n",
"abc_os_config",
"local_administrators",
"default_administrators",
"qad.abc.com: %w {}\n",
"CIS_Remediation_Windows",
"security_options",
"lanman_authentication_level: 3"
]
应生成的内容:
{
"abc_os_config": {
"local_administrators": {
"default_administrators": {
"abc.com": "%w {}",
"devad.abc.com": "%w {}",
"qad.abc.com": "%w {}"
}
}
},
"CIS_Remediation_Windows": {
"security_options": {
"lanman_authentication_level": "3"
}
}
}
1条答案
按热度按时间jhkqcmku1#
下面是一个使用我的函数
Set-TreeValue
的解决方案,在对原始数据进行了一些预处理之后:输出:
每行处理方式:
例如乘这条线
Set-TreeValue
中:']['
作为分隔符(反斜杠转义,因为函数需要RegEx)