PowerShell Query SharePoint List Based on the View


PowerShell Query SharePoint List Based on the View


Summary

This is Wiki is based on the TechNet Forum Post.
Forum Post Link

Background

Code used by OP will query only default view - That's SharePoint default behaviour whenever we do query using PowerShell it will fetch the information from Default View

Solution

We should tell PowerShell explicitly to query the required view

PowerShell Code

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
function Get-SPSite([string]$url) {

New-Object Microsoft.SharePoint.SPSite($url)
}

function Get-SPWeb([string]$url) {

$SPSite = Get-SPSite $url
return $SPSite.OpenWeb()
$SPSite.Dispose()
}

function Get-SPList([string]$url, [string]$List) {

$OpenWeb = Get-SPWeb $url
$OpenList = $OpenWeb.Lists[$List]

return $OpenList

$OpenWeb.Dispose()
}

$url = "http://localhost"
$List = "EmployeeBirthdays"
$View = "Homepage"

$BirthdaysList = Get-SPList -url $url -List $List

foreach($EmpName in $BirthdaysList.Items) 
{
$EmpName.Title #---->displays all titles, which is all users
}

Fix

001
002
003
004
005
006
007
#Method 1
$viewName = "View name" 
$view = $list.Views[$viewName]

#Method 2
$viewId = "A6932332-765A-4776-A1DF-18016DA1D645" 
$view = $list.GetView($viewId)