是否可以将Connect-SPOService cmdlet与应用程序标识符和密码一起使用?我需要在azure函数中获取有关网站集的信息,这些信息只能通过get-sposite cmdlet获得。
我正在尝试设置一个Azure功能,该功能使用SharePoint Online PowerShell模块来报告所有启用了外部共享的网站集。 由于我不想在此Azure功能中包括我的个人凭据,因此我在Azure AD中设置了应用程序标识符。 我可以将此应用程序ID与PnP Cmdlet(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
我希望能够使用默认的cmdlet,如下所示:
Connect-SPOService $adminUrl -AppId $appId -AppSecret $appSecret
答案 0 :(得分:0)
您必须向该应用授予权限。
网站集级别或租户级别。
网站集级别的授予权限:
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>
授予租户级别
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>