Requirement
I needed an easy way to automatically document my farm and take snap shots of its configuration periodically for audit purposes.
A quick search landed me on this Codeplex project by Jayvijw
As you can see from the above screenshot, the report is quite detailed and contains most of the information you would need as an administrator to track configuration changes and restore a farm to its original configuration if you ever have to start from scratch.
So I thought, why not use PowerShell and Windows Task Scheduler to give me weekly snapshots of my farm’s configuration?
Solution
Summary of what the script does
- Generate the farm configuration report using the 2010SPSFR.exe stored in C:\SharePoint
- Rename the report html file to our naming convention.
- Upload the report to a document library in SharePoint.
- E-mail a copy of the report to the SharePoint administrator.
Modify the variables in the script below to suit your environment. You can easily schedule this script in Windows Task Scheduler so that it generates reports periodically.
1: Add-PSSnapin Microsoft.SharePoint.PowerShell
2: Write-Host "Script starting.."
3:
4: #Variables
5: $ReportName = "c:\SharePoint\2010SPSFR.html"
6: $ReportNewName = "SPFarm-Config-" + $(Get-Date -Format dd-MM-yy) + ".html"
7:
8: #Store a copy of the configuration file in a SharePoint library
9: $Web = "http://your-site"
10: $List = "FarmConfig"
11:
12: $AdminEmail = "your@email.com"
13: $MailServer = "your.smtp.server.com"
14: $FromAddress = "sharepoint.notifications@domain.com"
15:
16: #Run Automatic Documenting Program and rename the file
17: CD C:\SharePoint
18: Start-Process c:\SharePoint\2010spsfr.exe
19:
20: #Give the program 40 seconds to complete report generation.
21: Start-Sleep 40
22:
23: #Rename the report to a useful name
24: Rename-Item -Path $ReportName -NewName $ReportNewName
25:
26: #Upload the file to SharePoint
27: Function UploadToSPDocLib($LocalPath,$spDocLibPath)
28: {
29: $WebMethod = "PUT"
30: $UploadFullPath = $spDocLibPath + $(split-path -leaf $LocalPath)
31: $WebClient = new-object System.Net.WebClient
32: $WebClient.Credentials = [System.Net.CredentialCache]::DefaultCredentials
33: $WebClient.UploadFile($UploadFullPath, $WebMethod, $LocalPath)
34: }
35:
36: UploadToSPDocLib "c:\sharepoint\$($ReportNewName)" "$($Web)\$($List)\"
37:
38: $messageParameters = @{
39: Subject = "SharePoint Farm: Test - Configuration Documentation"
40: Body = "Please see attached file for the SharePoint farm documentation generated on $(Get-Date -Format dd-MM-yy)"
41: From = $FromAddress
42: To = $AdminEmail
43: SmtpServer = $MailServer
44: Attachments = "c:\sharepoint\$($ReportNewName)"
45:
46: }
47:
48: Send-MailMessage @messageParameters
49:
50: Write-Host "Done."
Fuente: http://www.mysharepointadventures.com/2012/06/automatic-farm-documentation/
Comentarios