Можно ли использовать командлет Connect-SPOService с идентификатором приложения и секретом? Мне нужно получить информацию о семействах сайтов в функции Azure, которые доступны только через командлет get-sposing.
Я пытаюсь настроить функцию Azure, которая использует модуль SharePoint Online PowerShell, чтобы сообщать обо всех семействах сайтов, для которых включен внешний общий доступ.
Поскольку я не хочу включать свои личные учетные данные в эту функцию Azure, я настроил идентификатор приложения в Azure AD.
Я могу использовать этот идентификатор приложения с командлетами PnP (connect-pnponline -appid ...), но команда pnp get-pnpsite не возвращает необходимую подробную информацию.
Ниже приведен код с каркасом pnp, где все свойства Sharing * пусты.
Connect-PnPOnline -AppId $appid -AppSecret $appsecret -Url $adminUrl
$content = @()
Get-PnPTenantSite -Filter "Url -notlike ""*/personal*""" | ? {$_.SharingCapability -ne "Disabled" } | % {
$connection = Connect-PnPOnline -ReturnConnection -Url $_.url -AppId $AppId -AppSecret $AppSecret
$site = Get-PnPSite -Connection $connection;
$content += @{
title= $site.Title;
url=$site.Url;
owner=$site.Owner;
SharingCapability=$site.SharingCapability;
SharingDomainRestrictionMode=$site.SharingDomainRestrictionMode;
SharingAllowedDomainList=$site.SharingAllowedDomainList;
SharingBlockedDomainList=$site.SharingBlockedDomainList}
}
Этот код работает, но требуются действительные учетные данные пользователя:
param (
# Parameter help description
[Parameter(Mandatory=$true)]
[string]$TenantName,
# Parameter help description
[Parameter(Mandatory=$true)]
[string]$DestinationPath
)
$dateStr = Get-Date -Format yyyy-MM-dd_HH-mm-ss
$filename = "ExternalSharingReport_$dateStr.csv"
$content = @()
$adminUrl = "https://$TenantName-admin.sharepoint.com"
Connect-SPOService -Url $adminUrl
$content += "Title; Url; Owner; SharingCapability; SharingDomainRestrictionMode; SharingAllowedDomainList; SharingBlockedDomainList"
Get-SpoSite | ? {$_.Url -notlike "*/personal*" -AND $_.SharingCapability -ne "Disabled" } | % {
$site = Get-SPOSite $_.url;
$content += "$($site.Title); $($site.Url); $($site.Owner); $($site.SharingCapability); $($site.SharingDomainRestrictionMode); $($site.SharingAllowedDomainList); $($site.SharingBlockedDomainList)"
}
$completPath = Join-Path -Path $DestinationPath -ChildPath $filename
$content > $completPath
Я ожидаю, что смогу использовать командлет по умолчанию, например так:
Connect-SPOService $adminUrl -AppId $appId -AppSecret $appSecret