Это мой первый раз, поэтому дайте мне знать, если я делаю что-то не так с макетом своего вопроса.
У меня много файлов JSON с именами, соответствующими соглашению об именах, например file1.json, file2.json и т. Д. Каждый из них, вероятно, будет иметь несколько объектов, которые выглядят так:
[
{
"Forename": "Jim",
"Surname": "Cook",
"Gender": "M",
"DOB": "12-03-1994"
},
{
"Forename": "Sarah",
"Surname": "Parker",
"Gender": "F",
"DOB": "01-02-1983"
},
{
"Forename": "Alan",
"Surname": "Flemming",
"Gender": "M",
"DOB": "27-10-1989"
}
]
В Powershell я хотел бы преобразовать эти объекты JSON в объекты Powershell, а затем выбрать объекты с таким же значением для свойства, например людей, чье имя «Джим».
Пока я добился этого:
@(Get-ChildItem "file*.json" | %{Get-Content $_.FullName | Out-String | ConvertFrom-Json}) | Where-Object {$_.Forename -eq "Jim"}
Это работает, когда нужно работать только с одним файлом, который выводит:
Forename Surname Gender DOB
-------- ------- ------ ---
Jim Cook M 12-03-1994
Однако он не работает и выводит все объекты при использовании с несколькими файлами, как будто объект Where-Object игнорируется. Результат может выглядеть так:
Forename Surname Gender DOB
-------- ------- ------ ---
Jim Cook M 12-03-1994
Sarah Parker F 01-02-1983
Alan Flemming M 27-10-1989
Bill Preston M 04-07-1975
Helen Smith F 03-12-2001
Может кто-нибудь подсказать, что я здесь делаю не так и как это можно исправить, чтобы получить правильный результат? Спасибо