Sharepoint Online списки с Powershell CSOM, не в состоянии получить данные списка - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь подключиться к SharePoint Online с помощью Powershell и библиотеки Client.dll с полным контролем пользователя, но не могу получить данные списка. Кажется, я могу соединиться с моими учетными данными, но не могу получить данные из списка. Я постоянно получаю следующие ошибки:

MethodInvocationException: \ Powershell \ script.ps1: 36: 1 Line | 36 | $ Context.ExecuteQuery () | ~~~~~~~~~~~~~~~~~~~~~~~ | Исключение, вызывающее «ExecuteQuery» с аргументом (ами) «0»: «Удаленный сервер возвратил ошибку: (400) Неверный запрос.»

InvalidOperation: \ Powershell \ script.ps1: 44: 2 Line | 44 | $ ListItems | foreach {| ~~~~~~~~~~~~~~~~~~~~~~~ | Произошла ошибка при перечислении в коллекции: коллекция не была инициализирована. Он не был запрошен или запрос не был выполнен. Это может быть необходимо | прямо просили ..

вот мой код:

Add-Type -Path "C:/Program Files/WindowsPowerShell/Modules/SharePointPnPPowerShellOnline/3.19.2003.0/Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:/Program Files/WindowsPowerShell/Modules/SharePointPnPPowerShellOnline/3.19.2003.0/Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -Path "C:/Program Files/WindowsPowerShell/Modules/SharePointPnPPowerShellOnline/3.19.2003.0/Microsoft.SharePoint.Client.WorkflowServices.dll"

#Config Parameters
$SiteURL= "https://myorg.sharepoint.com/sites/mysite/"
$ListName="my list"
$ExportFile = "networklocation.csv"
$UserName = "myUser"
$Password = "myPassword"

#Setup Credentials to connect
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))

#Set up the context
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Context.Credentials = $Credentials

#Get the List
$List = $Context.web.Lists.GetByTitle($ListName)

#Get All List Items
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$ListItems = $List.GetItems($Query)
$Context.Load($ListItems)
$Context.ExecuteQuery()

#Array to Hold List Items
$ListItemCollection = @()

 $ListItems |  foreach {
    $ExportItem = New-Object PSObject
    $ExportItem | Add-Member -MemberType NoteProperty -Name "DepartmentName" -value $_["DepartmentName"]
    $ExportItem | Add-Member -MemberType NoteProperty -Name "ProjectTitle" -value $_["ProjectTitle"]
    $ExportItem | Add-Member -MemberType NoteProperty -Name "ActivityDescription" -value $_["ActivityDescription"]
    $ExportItem | Add-Member -MemberType NoteProperty -Name "Account" -value $_["Account"]
    $ExportItem | Add-Member -MemberType NoteProperty -Name "Department" -value $_["Department"]
    $ExportItem | Add-Member -MemberType NoteProperty -Name "Fund Code" -value $_["Fund Code"]
    $ExportItem | Add-Member -MemberType NoteProperty -Name "Fund Source" -value $_["Fund Source"]
    $ExportItem | Add-Member -MemberType NoteProperty -Name "ProjectGroup" -value $_["ProjectGroup"]
    $ExportItem | Add-Member -MemberType NoteProperty -Name "Fund Code" -value $_["Fund Code"]
    $ListItemCollection += $ExportItem
 }
#Export the result Array to CSV file
$ListItemCollection | Export-CSV $ExportFile -NoTypeInformation

Write-host "List data Exported to CSV file successfully!"```



1 Ответ

0 голосов
/ 07 апреля 2020

Пожалуйста, загрузите и установите библиотеку SharePoint Online CSOM здесь:

Компоненты клиента Online Online SDK

А затем укажите dll, как показано ниже:

Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"


#Config Parameters
$SiteURL= "https://Tenant.sharepoint.com/sites/dev/"
$ListName="mylist7"
$ExportFile = "D:\UserData1.csv"
$UserName = "user@Tenant.onmicrosoft.com"
$Password = "password"

#Setup Credentials to connect
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))

#Set up the context
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Context.Credentials = $Credentials

#Get the List
$List = $Context.web.Lists.GetByTitle($ListName)

#Get All List Items
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$ListItems = $List.GetItems($Query)
$Context.Load($ListItems)
$Context.ExecuteQuery()

#Array to Hold List Items
$ListItemCollection = @()

 $ListItems |  foreach {
    $ExportItem = New-Object PSObject
    $ExportItem | Add-Member -MemberType NoteProperty -Name "Title" -value $_["Title"]
    $ListItemCollection += $ExportItem
 }
#Export the result Array to CSV file
$ListItemCollection | Export-CSV $ExportFile -NoTypeInformation

Write-host "List data Exported to CSV file successfully!"```

Протестировано в PowerShell ISE, работает должным образом:

enter image description here

...