Powershell, где-Объект, возвращающий значение null

#powershell

Вопрос:

Я очень новичок в Powershell и не могу понять, что я делаю не так с объектом Where.

Следующий скрипт выполняется отлично (URL удален):

 Connect-PnPOnline -Url [SomeURL] -UseWebLogin  Get-PnPListItem -List "workproretentiontest" | Select-Object @{label="Filename"; expression={$_.FieldValues.FileRef}}, {$_.FieldValues.FileLeafRef}  

Показаны эти результаты:

Результаты Powershell

Мне нужно отфильтровать отдельные результаты здесь, но я не могу этого понять (и было потеряно много часов!)

Я чувствую, что перепробовал все возможные комбинации из следующих, но не могу понять, почему это не сработает

 | 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 делает, он всегда создает, создает новые объекты с указанными вами именами свойств.