As Part of an analysis, I wanted the List of WSPs installed in my SharePoint farm. To get that, I was about to write a small function in PowerShell Script. The function is as follows.
############# Get All The Solutions in the Farm and their deployed WebApplications ############ function GetSolution() { $script:Progress = "1,Entered" Write-Host "Entered into GetSolution Method" -ForegroundColor Yellow Add-Content "$ProgressFile" "Entered into GetSolution Method" # Assign the CSV and XML Output File Paths $Solution_XML_Path = $scriptBase + "Reports-$LogTimeAvailableSolutions.xml" # Create the XML File Tags $xmlWriter = New-Object System.XMl.XmlTextWriter($Solution_XML_Path,$Null) $xmlWriter.Formatting = 'Indented' $xmlWriter.Indentation = 1 $XmlWriter.IndentChar = "`t" $xmlWriter.WriteStartDocument() $xmlWriter.WriteComment('Solutions List') $xmlWriter.WriteStartElement('Solutions') $xmlWriter.WriteEndElement() $xmlWriter.WriteEndDocument() $xmlWriter.Flush() $xmlWriter.Close() # Get All the Solutions Add-Content "$ProgressFile" "Gathering All the Solutions from the Farm" $SolutionCollection = $farm.Solutions Add-Content "$ProgressFile" "Gathered All the Solutions from the Farm" if($SolutionCollection.Count -gt 0) { # Iterate through all the Solutions foreach($Solution in $SolutionCollection) { $tempContent = "Collecting the Information about the Solution : " + $Solution.DisplayName Add-Content "$ProgressFile" $tempContent # Get the deployed web applications $SPDeployedWebApps = $Solution.DeployedWebApplications # Create the Initial Solution Node $xmlDoc = [System.Xml.XmlDocument](Get-Content $Solution_XML_Path); $solutionNode = $xmlDoc.CreateElement("Solution") $xmlDoc.SelectSingleNode("//Solutions").AppendChild($solutionNode) $solutionNode.SetAttribute("Name", $Solution.DisplayName) Add-Content "$ProgressFile" "Iterate through the Installed Web Applications" # Iterate through all the Deployed Web Applications foreach($WebApplication in $SPDeployedWebApps) { # write the output on XML File $webAppNameNode = $solutionNode.AppendChild($xmlDoc.CreateElement("WebApplication")); $webAppNameNode.SetAttribute("Name", $WebApplication.DisplayName) $webAppURLNode = $webAppNameNode.AppendChild($xmlDoc.CreateElement("URL")); $webAppURLTextNode = $webAppURLNode.AppendChild($xmlDoc.CreateTextNode($WebApplication.Url)); $webAppDeploymentStateNode = $webAppNameNode.AppendChild($xmlDoc.CreateElement("Deployed")); $webAppDeploymentStateTextNode = $webAppDeploymentStateNode.AppendChild($xmlDoc.CreateTextNode($Solution.DeploymentState)); $xmlDoc.Save($Solution_XML_Path) } } } Write-Host "Completed GetSolution Method" -ForegroundColor Green Add-Content "$ProgressFile" "Completed GetSolution Method" $script:Progress = "1:Success" Write-Host "Please Find the Output XML file in the Path :" $Solution_XML_Path -ForegroundColor Green } ########### End of Method #################
Happy Coding,
Sathish Nadarajan.
Leave a comment