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

Access all the fields in a Lists using powershell,SharePoint and csom

我正在尝试检索列表中的所有项目,并在控制台上为每个项目显示项目的标题、ID 和创建的字段。此外,当我在项目 collection 上执行 get-member 时,我没有看到列表中的所有字段(甚至没有看到标题字段,只有 ID 和其他一些我不相信的字段非常像 DisplayName)

我原以为 caml 查询只会显示 select 个字段,但显示了我在 Caml 查询中指定的 none 个项目在 get-Member

任何人都可以帮助发现我可能做错了什么

Add-Type –Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type –Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\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
}

你几乎没有做错任何事。您要查找的属性实际上存储在字典 FieldValues 中。这将在您对项目 collection.

执行 get-member 时列出

可以使用以下方式列出属性:

$item.FieldValues

并且可以使用以下方法访问,对于标题:

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