Всем добрый день!
Есть JSON файл:
{
"id": "22",
"name": "Server",
"components":
[
{
"name": "Web",
"update": true,
"package": [
{
"source": "D:\\products\\*",
"target": "D:\\test\\"
},
{
"source": "%inetpub_path%\\web1\\*",
"target": "\\Web\\web1\\"
},
{
"source": "%inetpub_path%\\web2\\*",
"target": "\\Web\\web2\\"
},
{
"source": "%inetpub_path%\\web3\\*",
"target": "\\Web\\web3\\"
}
]
}
]
}
Необходимо из файла JSON получить все значения у которых "update" = true, затем выбрать от туда значения "source" и "target" и подставить пути в формулу "xcopy $foreachp /e /y". В идеале, для выполнения задачи, должно получиться так: "xcopy D:\products\* D:\test\ /e /y". Количество путей может увеличиваться со временем.
Вот что у меня есть:
#Парсим JSON
$JSON = Get-Content "D:\file.json" -Raw -Encoding UTF8 | ConvertFrom-Json
#Сортируем по update = true
$componentSelect = $JSON.components | select name, update, package | Where-Object {$_.update -like "True"}
$nextCompon = [string[]]
$nextCompon = $componentSelect.package | Select-Object source,target
$nextCompon.count
#Загоняем в цикл полученные значения
foreach ($foreach in $nextCompon)
{
$foreachp = $foreach -replace '@{source=', '' -replace ';', '' -replace 'target=','' -replace '}',''
$d = xcopy $foreachp /e /y
}
В переменной $foreachp, если выводить, получаю "D:\products\* D:\test\", но при подстановке в переменную $d получаю ошибку:
xcopy : Недопустимый путь
D:\Безымянный1.ps1:22 знак:14
+ $d = xcopy $foreachp /e /y
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (Недопустимый путь:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Подскажите, пожалуйста, как побороть.