PowerShell将SharePoint站点和Subsides导出到安全组

bhmjp9jg  于 2023-05-22  发布在  Shell
关注(0)|答案(1)|浏览(154)

我试图拿出一个powershell脚本,将允许我导出一个网站和子网站的列表和权限组有一个CSV。
我熟悉使用cmdlts,但不熟悉构建整个脚本。我可以用途:

Get-SPOSiteGroup  | Export-CSV C:\...

将网站用户组导出为CSV,但它不包括用户组所在网站的名称。
我还在网上找到了一个脚本,可以在这里打印出我的网站集中的网站和子网站:https://sharepoint.stackexchange.com/questions/101176/powershell-to-list-all-sites-and-subsites-in-sharepoint-online
我不知道该如何把这些信息结合起来。我试图导出到CSV的网站和子网站的列表和安全组有。
我试着跑:

get-sposite | Get-SPOSiteGroup **webdite**

并得到此错误消息:
“Get-SPOSiteGroup:无法将输入对象绑定到命令的任何参数,原因可能是命令不接受管道输入,或者输入及其属性与接受管道输入的任何参数都不匹配
我不知道该怎么把这些都整合起来。

rbpvctlc

rbpvctlc1#

Get-SPOSiteGroup cmdlet接受Site参数,因此可以像这样检索租户内每个 * 网站集 * 的网站组:

Connect-SPOService -Url $adminUrl 
$sitesInfo = Get-SPOSite 

#Retrieve and print all sites
foreach ($site in $sitesInfo) {
    Write-Host 'Site collection:' $site.Url     
    Get-SPOSiteGroup -Site $site.Url
    Write-Host '-----------------------------' 
}

要检索每个 * 网站 * 的其他组,可以使用以下脚本:

$adminUrl = "https://<tenant>-admin.sharepoint.com"
$UserName = "<username>@<tenant>.onmicrosoft.com" 
$Password = "--password goes here--"

$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
$creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
$pscreds = New-Object -TypeName System.Management.Automation.PSCredential -argumentlist $userName, $SecurePassword

Connect-SPOService -Url $adminUrl -Credential $pscreds
$sitesInfo = Get-SPOSite 

foreach ($site in $sitesInfo) {
    Write-Host 'Site collection:' $site.Url     
    #1. Retrieve and print site info 
    #Get-SPOSiteGroup -Site $site.Url
    $AllWebs = Get-SPOWebs -Url $site.Url -Credential $creds

    #2.Retrieve and print webs info (groups Title property in this case)
    foreach ($web in $AllWebs) {
        $web.Context.Load($web.RoleAssignments.Groups)
        $web.Context.ExecuteQuery()
        $web.RoleAssignments.Groups.GetEnumerator() | % { Write-Host $_.Title }   
    }
    Write-Host '-----------------------------' 
}

要点

1.要检索站点集中的站点,此处使用Get-SPOWebs.ps1
1.获取组 * 每个网站 * Web.RoleAssignments.Groups使用

相关问题