Можно ли использовать connect-sposervice с appId и app secret? - PullRequest
0 голосов
/ 17 января 2019

Можно ли использовать командлет 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

...