diff --git a/provisioning/Provision-Lists.ps1 b/provisioning/Provision-Lists.ps1 index 9c4129a..41f0187 100644 --- a/provisioning/Provision-Lists.ps1 +++ b/provisioning/Provision-Lists.ps1 @@ -42,9 +42,19 @@ .PARAMETER Only Провижионить только манифесты указанных форм (по полю form). По умолчанию — все. +.PARAMETER Lists + Провижионить только списки с указанными названиями. Нужен для добавления нового списка + на рабочий сайт: полный прогон перезаписывает варианты Choice у живых списков + значениями из манифеста, а манифест мог отстать от живого списка. + .EXAMPLE ./Provision-Lists.ps1 -SiteUrl "https://tnsukz.sharepoint.com/sites/sed" ` -ClientId "" -Tenant "tnsukz.onmicrosoft.com" -Thumbprint "" + +.EXAMPLE + ./Provision-Lists.ps1 -SiteUrl "https://tnsukz.sharepoint.com/sites/sed" ` + -ClientId "" -Tenant "tnsukz.onmicrosoft.com" -Thumbprint "" ` + -Lists "Исключённые предложения", "Исключённые предложения ОИД" #> param( [Parameter(Mandatory = $true)][string]$SiteUrl, @@ -52,7 +62,8 @@ param( [Parameter(Mandatory = $true)][string]$Tenant, [Parameter(Mandatory = $true)][string]$Thumbprint, [string]$ManifestsDir = "$PSScriptRoot/manifests", - [string[]]$Only + [string[]]$Only, + [string[]]$Lists ) $ErrorActionPreference = 'Stop' @@ -152,9 +163,18 @@ $manifests = @() foreach ($file in $files) { $def = Get-Content -Path $file.FullName -Raw -Encoding UTF8 | ConvertFrom-Json if ($Only -and ($Only -notcontains $def.form)) { continue } + if ($Lists) { + $def.lists = @($def.lists | Where-Object { $Lists -contains $_.title }) + if ($def.lists.Count -eq 0) { continue } + } $manifests += $def } -if (-not $manifests) { throw "Нет манифестов после фильтра -Only" } +if (-not $manifests) { throw "Нет манифестов после фильтров -Only / -Lists" } +if ($Lists) { + $found = @($manifests | ForEach-Object { $_.lists } | ForEach-Object { $_.title }) + $missing = @($Lists | Where-Object { $found -notcontains $_ }) + if ($missing.Count -gt 0) { throw "Списков нет в манифестах: $($missing -join ', ')" } +} # --- Проход A: создать все списки/библиотеки --- Write-Host "`n=== Проход A: списки ===" -ForegroundColor Cyan