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