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
|
Тенант, например tnsukz.onmicrosoft.com
|
||||||
|
|
||||||
.PARAMETER Thumbprint
|
.PARAMETER Thumbprint
|
||||||
Отпечаток сертификата в хранилище CurrentUser\My.
|
Отпечаток сертификата в хранилище CurrentUser\My. Либо он, либо CertificatePath.
|
||||||
|
|
||||||
|
.PARAMETER CertificatePath
|
||||||
|
Путь к файлу сертификата .pfx — если сертификат не установлен в хранилище.
|
||||||
|
|
||||||
|
.PARAMETER CertificatePassword
|
||||||
|
Пароль к .pfx из CertificatePath.
|
||||||
|
|
||||||
.PARAMETER ManifestsDir
|
.PARAMETER ManifestsDir
|
||||||
Папка с манифестами. По умолчанию — provisioning/manifests рядом со скриптом.
|
Папка с манифестами. По умолчанию — provisioning/manifests рядом со скриптом.
|
||||||
@@ -60,7 +66,9 @@ param(
|
|||||||
[Parameter(Mandatory = $true)][string]$SiteUrl,
|
[Parameter(Mandatory = $true)][string]$SiteUrl,
|
||||||
[Parameter(Mandatory = $true)][string]$ClientId,
|
[Parameter(Mandatory = $true)][string]$ClientId,
|
||||||
[Parameter(Mandatory = $true)][string]$Tenant,
|
[Parameter(Mandatory = $true)][string]$Tenant,
|
||||||
[Parameter(Mandatory = $true)][string]$Thumbprint,
|
[string]$Thumbprint,
|
||||||
|
[string]$CertificatePath,
|
||||||
|
[string]$CertificatePassword,
|
||||||
[string]$ManifestsDir = "$PSScriptRoot/manifests",
|
[string]$ManifestsDir = "$PSScriptRoot/manifests",
|
||||||
[string[]]$Only,
|
[string[]]$Only,
|
||||||
[string[]]$Lists
|
[string[]]$Lists
|
||||||
@@ -154,7 +162,14 @@ function Add-ListColumn {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Write-Host "Подключение к $SiteUrl (app-only) ..." -ForegroundColor Cyan
|
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
|
$files = Get-ChildItem -Path $ManifestsDir -Filter '*.provisioning.json' -ErrorAction SilentlyContinue
|
||||||
if (-not $files) { throw "Манифесты *.provisioning.json не найдены в $ManifestsDir" }
|
if (-not $files) { throw "Манифесты *.provisioning.json не найдены в $ManifestsDir" }
|
||||||
|
|||||||
Reference in New Issue
Block a user