PowerShell! What is PowerShell? I don't really care what it is, all I care is what it can do for me. I think PowerShell in windows is a really powerful command-line shell and its scripting language is easy to learn. Tranferring my knowledge in DOS scripting to PowerShell was such a breeze. In fact, I find it more easy and efficient to write scripts in PowerShell. The cmdlets are very straight-forward. One thing I notice though that it works and behaves like xTerm - I'll end there since that would be a very different topic :).
Basically, my script is just a simple program that creates an XML file that contains all the information regarding the SharePoint services, apps and sites in the server. Then I can use the file as my inventory report source.
NOTE: please adjust the code a little bit when you copy and paste the code below... I put space between the "<" and tag name for the code to be posted.
write-host "start processing SharePoint Sites Inventory..."
$outputFile = "C:\ps_scripts\inventory.xml"
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
$farm = [Microsoft.SharePoint.Administration.SPFarm]::Local
$websvcs = $farm.Services where -FilterScript {$_.GetType() -eq [Microsoft.SharePoint.Administration.SPWebService]}
$webapps = @()
'< ?xml version="1.0" encoding="utf-8"?>' out-File $outputFile
'<>' out-File $outputFile -append
foreach ($websvc in $websvcs)
{
'<>' out-File $outputFile -append
'<>' out-File $outputFile -append
$websvc.Name out-File $outputFile -append
'< /Name>' out-File $outputFile -append
'<>' out-File $outputFile -append
foreach ($webapp in $websvc.WebApplications)
{
'<>' out-File $outputFile -append
'<>' out-File $outputFile -append
$webapp.Name out-File $outputFile -append
'< /Name>' out-File $outputFile -append
'<>' out-File $outputFile -append
$webapp.URL out-File $outputFile -append
'< /URL>' out-File $outputFile -append
'<>' out-File $outputFile -append
foreach ($site in $webapp.Sites)
{
'<>' out-File $outputFile -append
'<>' out-File $outputFile -append
$site.Name out-File $outputFile -append
'< /Name>' out-File $outputFile -append
'<>' out-File $outputFile -append
$site.URL out-File $outputFile -append
'< /URL>' out-File $outputFile -append
'<>' out-File $outputFile -append
foreach ($web in $site.AllWebs)
{
'<>' out-File $outputFile -append
'<>' out-File $outputFile -append
$web.Name out-File $outputFile -append
'< /Name>' out-File $outputFile -append
'<>' out-File $outputFile -append
$web.URL out-File $outputFile -append
'< /URL>' out-File $outputFile -append
'<>' out-File $outputFile -append
foreach ($list in $web.Lists)
{
'<>' out-File $outputFile -append
'<>' out-File $outputFile -append
$list.Title out-File $outputFile -append
'< /Title>' out-File $outputFile -append
'<>' out-File $outputFile -append
$list.URL out-File $outputFile -append
'< /URL>' out-File $outputFile -append
'< /List>' out-File $outputFile -append
}
'< /Lists>' out-File $outputFile -append
'<>' out-File $outputFile -append
foreach ($group in $web.Groups)
{
'<>' out-File $outputFile -append
'<>' out-File $outputFile -append
$group.Name out-File $outputFile -append
'< /Name>' out-File $outputFile -append
'<>' out-File $outputFile -append
foreach ($user in $group.Users)
{
'<>' out-File $outputFile -append
$user.Name out-File $outputFile -append
'< /User>' out-File $outputFile -append
}
'< /Users>' out-File $outputFile -append
'< /Group>' out-File $outputFile -append
}
'< /Groups>' out-File $outputFile -append
'< /Web>' out-File $outputFile -append
}
'< /Webs>' out-File $outputFile -append
'< /Site>' out-File $outputFile -append
}
'< /Sites>' out-File $outputFile -append
'< /App>' out-File $outputFile -append
}
'< /Apps>' out-File $outputFile -append
'< /Service>' out-File $outputFile -append
}
'< /Services>' out-File $outputFile -append
write-host "done."
Thursday, November 18, 2010
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment