Summary
I have a PowerShell Script, I get all items from the SharePoint list. After getting all items I want to filter by a condition so I used the Where-Object as following.
# fyi, % -> ForEach-Object
[array]$items = Get-PnPListItem @HashArguments | `
%{New-Object psobject -Property `
@{
Id = $_.Id;
reqStatus = $_["reqStatus"];
}} | `
select ID,
reqStatus
[array]$PendingFilteredItems = $items | Where-Object {$_.reqStatus -contains 'Active'} | Sort-Object -Property Id
if ( ($PendingFilteredItems -ne $null) -and ($PendingFilteredItems.Count -gt 0) )
{
# ... further processing for array count is greater than zero
}
All worked fine, the condition was hitting for greater than zero items. But issue came when the item left in the SharePoint list as one item. I always got a “PSCustomObject” as a type for the PendingFilteredItems.
How to always return and array for any number of items left?
Basically I had to add an [array] type for the variable. It is highlighted in the above code.
Conclusion
I know it is simple post for such a solution. If you read this and fix the issue at your side this will save lot of time. I will be happy that you saved some time.