#powershell
Вопрос:
Я очень новичок в Powershell и не могу понять, что я делаю не так с объектом Where.
Следующий скрипт выполняется отлично (URL удален):
Connect-PnPOnline -Url [SomeURL] -UseWebLogin Get-PnPListItem -List "workproretentiontest" | Select-Object @{label="Filename"; expression={$_.FieldValues.FileRef}}, {$_.FieldValues.FileLeafRef}
Показаны эти результаты:
Мне нужно отфильтровать отдельные результаты здесь, но я не могу этого понять (и было потеряно много часов!)
Я чувствую, что перепробовал все возможные комбинации из следующих, но не могу понять, почему это не сработает
| Where-Object {$_.FieldValues.FileLeafRef -eq "201700007"}
Что действительно работает, так это когда я запрашиваю значения null ( как и в каждой записи, возвращаемой при выполнении следующего), что означает $_.Полевые значения.FileLeafRef всегда возвращает значение null?? Но я не могу понять, почему
| Where-Object {$_.FieldValues.FileLeafRef -eq $null}
Любая помощь или руководство будут очень признательны 🙂
Ответ №1:
Причина, по которой вы это написали, будет буквально свойство, вызываемое '$_.FieldValues.FileLeafRef'
для объекта, поэтому вам придется ссылаться на него как на таковое:
| Where-Object {$_.'$_.FieldValues.FileLeafRef' -eq "201700007"}
Но было бы лучше, если бы вы в первую очередь дали ему правильное название, как вы это сделали с "Filename"
:
Select-Object @{label="Filename"; expression={$_.FieldValues.FileRef}}, @{label="Date"; expression={$_.FieldValues.FileLeafRef}} | Where-Object Date -gt "201700007"
Комментарии:
1. Я не понимал, что вы можете просто сослаться на этикетку, установленную в поле, большое спасибо за вашу помощь и отзывы.
2. @BenWood Что
Select-Object
делает, он всегда создает, создает новые объекты с указанными вами именами свойств.