Я создаю СПИСОК в SharePoint с помощью PowerShell через файл CSV. Я могу создать список, а также успешно добавить элементы, хотя мне нужно проверить, что элемент (строка), который я добавляю в список, еще не существует в списке, прежде чем обновлять список.
В коде я не могу правильно получить $ItemExist. Он всегда возвращает значение Null. ($MaxItems в настоящее время имеет значение 2, так как в списке "list_DLs" есть 2 элемента).
(Я уже проверил все другие сообщения на сайте на предмет той же проблемы и не нашел решения)
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $AdminName, $Pass
$Path_SpFiles = "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI"
Add-Type -path "$Path_SpFiles\Microsoft.SharePoint.Client.Runtime.dll"
Add-Type -path "$Path_SpFiles\Microsoft.SharePoint.Client.dll"
# ------- Connect to SharePoint Site and fetch List Items ----------------
[Net.ServicePointManager]::SecurityProtocol = 'TLS11','TLS12','ssl3'
$site = "https://xyz.sharepoint.com/sites/mco"
$context = New-Object Microsoft.SharePoint.Client.ClientContext($site)
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($AdminName, $Pass)
$context.Credentials = $credentials
$ListName = "list_DLs"
$list = $context.Web.Lists.GetByTitle($ListName)
$query = [Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery(5000)
$items = $list.GetItems($query)
$context.Load($items)
$context.ExecuteQuery()
$MaxItems = $items.count
$SourceFile = "C:\Temp\list_DLs.csv"
$CSVData = Import-CSV -path $SourceFile
foreach ($row in $CSVData)
{
#----------------------------------------------
#Check if the item has previously been added
if ($MaxItems -ne 0)
{
$ItemExist = $items | where{$_.Title -eq $row.PrimarySmtpAddress}
if ($ItemExist -ne $null) {Continue}
}
#----------------------------------------------
$ListItemInfo = New-Object Microsoft.SharePoint.Client.ListItemCreationInformation
$Item = $list.AddItem($ListItemInfo)
$Item["Title"] = $row.PrimarySmtpAddress
$Item.Update()
$Context.ExecuteQuery()
Break
}
Я знаю, что $items возвращаются правильно, потому что если я запускаю этот фрагмент кода для перебора элементов, я могу их правильно увидеть. Я просто не могу заставить $ItemExist работать правильно
ForEach ($item in $items)
{
$b = $item["Title"]
$b
Break
}