使用powershell,SharePoint和csom访问列表中的所有字段

时间:2017-08-19 23:21:58

标签: powershell sharepoint csom

我正在尝试检索列表中的所有项目,并且每个项目都会在控制台上显示项目标题,ID和已创建的字段。此外,当我在Items集合上执行get-member时,我看不到列表中的所有字段(甚至不是标题字段,只有ID和其他我不相信的字段非常像DisplayName

我原以为caml查询只会选择要显示的字段,但我在Caml查询中指定的项目都没有显示在get-Member

任何人都可以帮助发现我可能做错的事情

Add-Type –Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type –Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

Function Get-SPOContext([string]$Url,[string]$UserName,$Password)
{
    #$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
    $context = New-Object Microsoft.SharePoint.Client.ClientContext($Url)
    $context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $Password)
    return $context
}

Function Get-ListItems([Microsoft.SharePoint.Client.ClientContext]$Context, [String]$ListTitle) {
    $list = $Context.Web.Lists.GetByTitle($listTitle)
    $qry = [Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery(13,'ID','Created','Modified','Title')
    $items = $list.GetItems($qry)
    $Context.Load($items)
    $Context.ExecuteQuery()
    return $items 
}

$UserName = "john.doe@sharepointonline.co.uk"
$Password = Read-Host -Prompt "Enter password" -AsSecureString    
$Url = "https://mycompany.sharepoint.com/sites/COP/SharePoint/john"

$context = Get-SPOContext -Url $Url -UserName $UserName -Password $Password
$items = Get-ListItems -Context $context -ListTitle "NPT Form" 

foreach($item in $items)
{
   $item.Id
   $item | gm
}

1 个答案:

答案 0 :(得分:3)

你非常接近没有做错任何事。您要查找的属性实际存储在字典FieldValues中。当您对Items集合执行get-member时,将列出此项。

可以使用以下列出特征:

$item.FieldValues

可以使用以下方法访问标题:

$item["Title"]
$item.FieldsValues.Title