Также вы можете попробовать следующее.Так как есть несколько способов использования SharePoint Online.Один из моих любимых способов - установить SharePoint Online SDK.Это идет с DLL-файлами, которые вы можете добавить в свой скрипт.Ниже приведен пример сценария, который создает запрос на определенном дочернем сайте, а затем перебирает все результаты и выводит вкладку «Сотрудники».
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"
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\ISAPI\Microsoft.SharePoint.Client.UserProfiles.dll"
$UserName = "admin@yoursite.onmicrosoft.com"
$Password = "yourpassword"
$Url = "https://yoursite.sharepoint.com/subSite"
$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
$context = New-Object Microsoft.SharePoint.Client.ClientContext($Url)
$context.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
$listTitle = "Title of the list containing the items you want to query"
$list = $Context.Web.Lists.GetByTitle($listTitle)
$fields = $list.Fields
$qry = [Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery(10000,'ID','Created','Modified','Title','Employees')
$items = $list.GetItems($qry)
$Context.Load($fields)
$Context.Load($items)
$Context.ExecuteQuery()
foreach($item in $items){
$item.FieldValues['Employees']
}
То, что вы видите выше, является примером сценария, который можетзапросить элементы из списка.В цикле foreach я перебираю все элементы, найденные в списке, и выписываю вкладку сотрудников.В моем CreateAllItemsQuery я даю команду, чтобы получить «ID», «Заголовок» и т. Д. Все эти значения я могу адресовать после этого.
Другой способ запроса вашей среды SharePoint Online - использование веб-запроса:
Пример запроса информации о разрешениях для определенной папки в определенном списке, который я сгенерировал, воссоздав этот точный URL при открытииПрава доступа к общим папкам:
$baseUri = "https://yoursite.sharepoint.com"
$clientId = 'YourClientId'
$clientSecret = 'YourclientSecret'
$resource = '00000002-0000-0fe2-ce00-000000000000/yoursite.sharepoint.com@7b60bad-9ab2-45d0-a2ac-c2c4ght4f7e'
$body = @{
grant_type = 'client_credentials'
client_id = $ClientId
client_secret = $ClientSecret
resource = $Resource
}
$result = Invoke-WebRequest -Method Post -Uri 'https://accounts.accesscontrol.windows.net/7b40dcad-9fe2-44d0-a0cc-c2d32f008f7e/tokens/OAuth/2' -ContentType 'application/x-www-form-urlencoded' -Body $body
$accessToken = ($result.content | ConvertFrom-Json).access_token
$headers = @{
accept = 'application/json;odata=verbose'
authorization = "Bearer $accessToken"
}
$listId = "2BD249F3-1847-4972-835S-99266DC415"
$itemId = "2"
$uri = $baseUri + "/Lists(@a1)/GetItemById(@a2)/GetSharingInformation?@a1='{$listId}'" + "&@a2='$itemId'" + '&$Expand=permissionsInformation,pickerSettings'
$result = Invoke-WebRequest -Method Post -Uri $uri -Headers $headers
($result.content | ConvertFrom-Json).d.permissionsInformation.links.results.linkDetails.Invitations.results
Как вы можете видеть, существует несколько способов взаимодействия с SharePoint Online.И в основном последний вариант - это, в основном, просмотр запросов в Developer Tools (F12), поиск точного запроса, который SharePoint выполняет сам, и репликация этого URL.Первый - с помощью DLL-файлов, которые требуют дополнительной установки.
Как вы можете видеть, есть множество вариантов.Если вы не можете найти правильный URL для выполнения веб-запроса, первый вариант может быть интересным.Требуется много проб и ошибок, но я надеюсь, что это поможет вам.