This PowerShell script is my first attempt at getting some details about a set of sub sites in SharePoint and writing them to a text file and then opening the text file to screen so you can see the results.
If anything it has been a great learning experience.
add-pssnapin microsoft.sharepoint.powershell
CLS
## Set Variables
$site = "http://sp2010/dashboards"
$logFilePath = "c:\Temp\Powershell\Logs\sites.txt"
## Delete the file if it exists so the data does not append to the file
$deleteLogFile = Remove-Item -Path $logFilePath -Confirm:$false
## Create a function to handle the logic
function GetListOfSites
{
## Check to see if the log file exists
$checkForLogFile = Test-Path $logFilePath
if($checkForLogFile -ne $true)
{
$webs = Get-SPWeb $site
## Make sure the site we specified exists
if($webs)
{
foreach($web in $webs.Webs)
{
## Set the values to variables so we can format the output
$webName = $web.Name
$webDescription = $web.Description
$webUrl = $web.Url
$webID = $web.ID
$webTemplate= $web.webtemplate
$webTemplateID = $web.webtemplateID
## Getting fancy
$siteDetails +=
"---------SITE DETAILS------------",
"Site: $webName",
"Description:$webDescription",
"Site Url:$webUrl",
"Site ID:$webID",
"Site Template:$webTemplate#$webTemplateID"
}
## Output the values into a text file and save it to the file system
$siteDetails > $logFilePath
Write-Host "Log file has been generated, please wait a moment while the file opens..."
}
else
{
Write-Host "Site: $web not found, exiting."
}
## Open the log file
Invoke-Item $logFilePath
}
else
{
Write-Host "Log file: $logFilePath not found, exiting."
}
}
### MAIN
## Using Start-SPAssignment -Global to ensure that we don't leave a bunch of garbage in memory
Start-SPAssignment -Global
GetListOfSites
Stop-SPAssignment -Global
No comments:
Post a Comment