diff --git a/provisioning/Provision-Lists.ps1 b/provisioning/Provision-Lists.ps1 index 41f0187..7411ee9 100644 --- a/provisioning/Provision-Lists.ps1 +++ b/provisioning/Provision-Lists.ps1 @@ -34,7 +34,13 @@ Тенант, например tnsukz.onmicrosoft.com .PARAMETER Thumbprint - Отпечаток сертификата в хранилище CurrentUser\My. + Отпечаток сертификата в хранилище CurrentUser\My. Либо он, либо CertificatePath. + +.PARAMETER CertificatePath + Путь к файлу сертификата .pfx — если сертификат не установлен в хранилище. + +.PARAMETER CertificatePassword + Пароль к .pfx из CertificatePath. .PARAMETER ManifestsDir Папка с манифестами. По умолчанию — provisioning/manifests рядом со скриптом. @@ -60,7 +66,9 @@ param( [Parameter(Mandatory = $true)][string]$SiteUrl, [Parameter(Mandatory = $true)][string]$ClientId, [Parameter(Mandatory = $true)][string]$Tenant, - [Parameter(Mandatory = $true)][string]$Thumbprint, + [string]$Thumbprint, + [string]$CertificatePath, + [string]$CertificatePassword, [string]$ManifestsDir = "$PSScriptRoot/manifests", [string[]]$Only, [string[]]$Lists @@ -154,7 +162,14 @@ function Add-ListColumn { } Write-Host "Подключение к $SiteUrl (app-only) ..." -ForegroundColor Cyan -Connect-PnPOnline -Url $SiteUrl -ClientId $ClientId -Tenant $Tenant -Thumbprint $Thumbprint +if ($Thumbprint) { + Connect-PnPOnline -Url $SiteUrl -ClientId $ClientId -Tenant $Tenant -Thumbprint $Thumbprint +} +elseif ($CertificatePath) { + $securePassword = ConvertTo-SecureString $CertificatePassword -AsPlainText -Force + Connect-PnPOnline -Url $SiteUrl -ClientId $ClientId -Tenant $Tenant -CertificatePath $CertificatePath -CertificatePassword $securePassword +} +else { throw "Укажите -Thumbprint или -CertificatePath" } $files = Get-ChildItem -Path $ManifestsDir -Filter '*.provisioning.json' -ErrorAction SilentlyContinue if (-not $files) { throw "Манифесты *.provisioning.json не найдены в $ManifestsDir" }