feat: Provision-Lists.ps1 — вход по файлу сертификата .pfx (#1)
Рабочий app-only сертификат для /sites/sed лежит файлом с паролем, а не в хранилище CurrentUser\My — скрипт умел только по отпечатку. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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" }
|
||||
|
||||
Reference in New Issue
Block a user