我正在尝试将一个变量从variables.json加载到powershell中,其中包含以下内容
{
"psfp": "C:/San\/SV65\/ps",
"vmfp": "'C:/San\/SV65\/hyper-packer\/hyper-packer\/output-centos8-9\/Virtual Machines'",
"psmp": "C:/San\/SV65\/ps",
"vmname": ""
} 尝试使用导入
$jvariables=Get-Content -Raw -Path '.\variables-ps.json' | ConvertFrom-Jsonpowershell上的输出
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文件。
请分享
发布于 2020-02-20 11:51:16
您可以遍历对象属性并更改路径分隔符,如下所示:
$jvariables.psobject.properties | where {$_.membertype -eq "NoteProperty"} |
foreach {$data.($_.name) = $_.value.replace("/","\")}或者更简单的方法是在配置文件中转义反斜杠,如下所示:
{
"psfp": "C:\\San\\SV65\\ps",
"vmfp": "'C:\\San\\SV65\\hyper-packer\\hyper-packer\\output-centos8-9\\Virtual Machines'",
"psmp": "C:\\San\\SV65\\ps",
"vmname": ""
} https://stackoverflow.com/questions/60312269
复制相似问题