0

我正在尝试提出一个 powershell 脚本,该脚本允许我将站点和子站点列表以及其中的权限组导出到 CSV。

我熟悉使用 cmdlts,但不熟悉构建整个脚本。我可以使用:

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

将网站组导出到 CSV,但不包括它们所在的网站的名称。

我还在网上找到了一个脚本,可以在这里打印出我的网站集中的网站和子网站: https ://sharepoint.stackexchange.com/questions/101176/powershell-to-list-all-sites-and-subsites-in-在线分享点

我不知道如何结合这些信息。我正在尝试将站点和子站点列表以及其中的安全组导出到 CSV。

我尝试运行:

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

并得到这个错误信息:

“Get-SPOSiteGroup:输入对象不能绑定到命令的任何参数,因为命令不接受管道输入,或者输入及其属性不匹配任何接受管道输入的参数”

我不确定如何让所有这些一起工作。

4

1 回答 1

1

Get-SPOSiteGroupcmdlet接受参数,因此可以像这样检索租户中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此处使用检索网站集中的网站
  2. 使用每个网站 获取组Web.RoleAssignments.Groups
于 2018-03-24T10:57:31.923 回答