首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell: ConvertFrom-Json由于向前和向后兼容性,不会获得赋值的变量

Powershell: ConvertFrom-Json由于向前和向后兼容性,不会获得赋值的变量
EN

Stack Overflow用户
提问于 2020-02-20 10:55:58
回答 1查看 47关注 0票数 1

我正在尝试将一个变量从variables.json加载到powershell中,其中包含以下内容

代码语言:javascript
复制
{
    "psfp":  "C:/San\/SV65\/ps",
    "vmfp": "'C:/San\/SV65\/hyper-packer\/hyper-packer\/output-centos8-9\/Virtual Machines'",
    "psmp": "C:/San\/SV65\/ps",
    "vmname": ""
} 

尝试使用导入

代码语言:javascript
复制
$jvariables=Get-Content -Raw -Path '.\variables-ps.json' | ConvertFrom-Json

powershell上的输出

代码语言:javascript
复制
PS C:\San\SV65\ps> Write-host $jvariables.psfp
C:/San/SV65/ps

PS C:\San\SV65\ps> Write-host $jvariables.vmfp
'C:/San/SV65/hyper-packer/hyper-packer/output-centos8-9/Virtual Machines'

PS C:\San\SV65\ps> Write-host $jvariables.psmp
C:/San/SV65/ps

对于windows路径,这些正斜杠在powershell上不兼容!ConvertFrom-Json也不接受使用'‘尝试的变量的反斜杠

因此无法在这些路径上加载我的模块

有没有其他方法来实现上述情况?我想使用json,因为它很容易让最终用户更新txt文件。

请分享

EN

回答 1

Stack Overflow用户

发布于 2020-02-20 11:51:16

您可以遍历对象属性并更改路径分隔符,如下所示:

代码语言:javascript
复制
$jvariables.psobject.properties | where {$_.membertype -eq "NoteProperty"} | 
foreach {$data.($_.name) = $_.value.replace("/","\")}

或者更简单的方法是在配置文件中转义反斜杠,如下所示:

代码语言:javascript
复制
{
"psfp":  "C:\\San\\SV65\\ps",
"vmfp": "'C:\\San\\SV65\\hyper-packer\\hyper-packer\\output-centos8-9\\Virtual Machines'",
"psmp": "C:\\San\\SV65\\ps",
"vmname": ""

} 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60312269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档