Domanda

I want to be able to see the number, names, url of all site collections there are in a given farm. Would there be a powershell command to do that?

È stato utile?

Soluzione

There should be a powershell equivalent of stsadm.exe -o enumsites -url https://sp.root.com > "U:\XML\siteowners.xml" which is what I use to generate XML for import into Excel to view all top level site collections, the owners, the content db it lives in and the size/quota information.

Altri suggerimenti

If all you want is a list of all site collections in the farm, all you have to do is open a PowerShell window, load the SharePoint snapin if you haven't (Add-PSSnapin Microsoft.SharePoint.PowerShell), and type Get-SPSite.

If you want to return the list of site collections for a specific web application, the easiest way is to just pipe it as Get-SPWebApplication http://intranet | Get-SPSite.

If you want to grab additional information like boflynn suggested, you can also do this with a pipe; no need to script, or loop: Get-SPWebApplication http://intranet | Get-SPSite | Select ID, Url.

You can also easily convert any PowerShell object or object array into XML using the Export-Clixml cmdlet. As an example, here's the previous command to get the ID and Url of all intranet web application sites, piped to an XML file: Get-SPWebApplication http://intranet | Get-SPSite | Select ID, Url | Export-Clixml c:\intranetsites.xml

There's many output and conversion options; likewise, you also have the ability to output as a CSV using Export-Csv.

Previous answers are not incorrect, but these are cleaner and shorter ways to do it.

Get-SPSite will return the site collections for you. If you want more details, you can loop through them for further processing:

foreach($site in Get-SPSite) {
    echo $site.Url
    echo $site.ID
    #anything else here
}
$siteUrl = Read-Host "Enter Site URL"
$rootSite = New-Object Microsoft.SharePoint.SPSite($siteUrl)
$spWebApp = $rootSite.WebApplication

foreach($site in $spWebApp.Sites)
{
    foreach($siteAdmin in $site.RootWeb.SiteAdministrators)
    {
        Write-Host "$($siteAdmin.ParentWeb.Url) - $($siteAdmin.DisplayName)"
    }
    $site.Dispose()
}

If you copy your question title and past it into google search, the first link search result will contain a powershell script that describes how to collect site collections. But do not fogive to add Add-PSSnapin Microsoft.SharePoint.PowerShell command befor your comands.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top