try { Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.Runtime.dll" Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll" } catch { Write-Host "Problem in loading CSOM DLLs : $_.Exception.Message" -foregroundcolor black -backgroundcolor Red return } # Initialize client context $adminURL = Read-Host -Prompt "Enter Tenant Admin URL:" $username = Read-Host -Prompt "Enter user name:" $password = Read-Host -Prompt "Enter password:" -AsSecureString #$sideLoadingGuid = new-object System.Guid "AE3A1339-61F5-4f8f-81A7-ABD2DA956A7D" try{ function Get-SPOWebs($webURL){ #Get Web information and subsites $clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($webURL) $clientContext.Credentials = $credentials $Web = $clientContext.Web $clientContext.Load($Web) $clientContext.Load($Web.Webs) $clientContext.executeQuery() #Do something with the current sub-site #Write-host $Web.URL #Iterate through each subsite in the current web foreach ($Subweb in $Web.Webs) { if($Subweb.AppInstanceId -eq [GUID]::Empty){ Write-Host 'Url:' $Subweb.url # Append as child to an existing node [System.XML.XMLElement]$newXmlSiteURLElement=$oXMLRoot.appendChild($xmlDoc.CreateElement("SiteURL")) $newXmlNameTextNode = $newXmlSiteURLElement.AppendChild($xmlDoc.CreateTextNode($Subweb.url)); #Call the function recursively to process all subsites underneaththe current web Get-SPOWebs($Subweb.url) } } } } catch{ Write-Host "$_.Exception.Message" -foregroundcolor black -backgroundcolor Red return } try { # connect/authenticate to SharePoint Online and get ClientContext object.. $clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($adminURL) $credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $password) $clientContext.Credentials = $credentials # Enumerate all site collections $tenant = New-Object Microsoft.Online.SharePoint.TenantAdministration.Tenant($clientContext) $props = $tenant.GetSiteProperties(0, $true) $clientContext.Load($props) $clientContext.ExecuteQuery() # Create a new XML File with sites root node [System.XML.XMLDocument]$xmlDoc=New-Object System.XML.XMLDocument [System.XML.XMLElement]$oXMLRoot=$xmlDoc.CreateElement("sites") $xmlDoc.appendChild($oXMLRoot) foreach($sp in $props) { Write-Host 'Url:' $sp.Url # Append as child to an existing node [System.XML.XMLElement]$newXmlSiteURLElement=$oXMLRoot.appendChild($xmlDoc.CreateElement("SiteURL")) $newXmlNameTextNode = $newXmlSiteURLElement.AppendChild($xmlDoc.CreateTextNode($sp.Url)); #$sp.Url | out-file "C:\SiteCollectionList.xml" Get-SPOWebs($sp.Url) } # Save File $xmlDoc.Save("c:\config1.xml") } catch { Write-Host "$_.Exception.Message" -foregroundcolor black -backgroundcolor Red return }
Thursday, 13 December 2018
Power Shell Script to Export all existing sitecollection URLs and its site's URL in a SharePoint Online tenant to XML file
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment