Я сейчас пытаюсь выучить powershell. У меня есть некоторый код, который просматривает некоторые изображения .jpg, отправляет эти изображения в exiftool и выводит их exif-информацию в файл json. Затем я помещаю файл Json в powershell с помощью Get-Content, а затем преобразовываю его в объект PSO, используя ConvertFrom- Json. У меня проблемы с пониманием того, как получить доступ к нужным мне данным из PSObject. Например, я хотел бы получить FileName изображений и их настройки экспозиции. Я попытался psobject.properties.Name, который показывает мне только свойства PSObject, а не фактические объекты внутри. Затем я попробовал Get-Member и некоторые его свойства безрезультатно. Я считаю, что Get-Member - это маршрут, по которому я должен go, но я не совсем уверен, как его использовать.
Это очень сжатый пример Json:
[
"[{",
" \"FileName\": \"DJI_0001.JPG\",",
" \"ExposureTime\": 0.005,",
"},",
"{",
" \"FileName\": \"DJI_0002.JPG\",",
" \"ExposureTime\": 0.003125,",
"},",
"{",
" \"FileName\": \"DJI_0004.JPG\",",
" \"ExposureTime\": 0.00625,",
"}]"
]
Вот некоторый код, который я пробовал:
$scriptDir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent
Write-Host "Procesing Files..."
$command = $scriptDir + '\exiftool.exe ' + $directory + ' -json -n -r -EXT JPG'
$allmetadata = Invoke-Expression $command
#Write-Host $allmetadata
$allmetadata | ConvertTo-Json | Out-File "$scriptDir\JsonOut.json"
#########################################################################################################
#
# This Gets the Json File and converts it to a PSObject
#
#########################################################################################################
$convertedmeta = Get-Content "$scriptDir/JsonOut.json" -Raw -Encoding UTF8 | ConvertFrom-Json
Write-Host $convertedmeta
#########################################################################################################
#
# This is code where I was trying to explore the information within the PSObject trying to figure out
# where the FileName and ExpsoureTime are kept so I can call the values
#
#########################################################################################################
Write-Host "Exploring JSON File"
#$jsonInfoExplore = $convertedmeta.PsObject.Properties.Value.PsObject.Properties.Name
#$jsonInfoExplore = $convertedmeta.psobject.properties.Name
#$jsonInfoExplore = $convertedmeta.psobject.properties.Value
$jsonInfoExplore = $convertedmeta | Get-Member
Write-Host $jsonInfoExplore
Как вы можете видеть, где Код был закомментирован, я пробовал несколько разных способов получить информацию, которую я ищу. Я просто не совсем понимаю, как вызвать данные из PSObject.
Любая помощь и рекомендации будут с благодарностью.