【问题标题】:PowerShell to Export SharePoint Sites and Subsides with security groupsPowerShell 导出带有安全组的 SharePoint 站点和子站点
【发布时间】:2018-03-21 18:40:00
【问题描述】:

我正在尝试编写一个 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 : 输入对象不能绑定任何参数 对于命令要么是因为命令不采用管道 输入或输入及其属性不匹配任何 采用管道输入的参数”

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

【问题讨论】:

    标签: powershell sharepoint export-to-csv sharepoint-online sites


    【解决方案1】:

    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 检索网站集中的网站 这里
    2. 获取群组每个网站使用Web.RoleAssignments.Groups

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 2019-05-19
      • 2012-02-14
      • 1970-01-01
      • 2018-02-09
      • 2012-08-15
      • 1970-01-01
      相关资源
      最近更新 更多