Exportar el inventario de configuración de SharePoint a XML usando PowerShell
Requisito: Tuvimos que comparar inventarios específicos de SharePoint entre diferentes entornos, como aplicaciones web, bases de datos de contenido, etc. Por lo tanto, tuvimos que extraer y exportar configuraciones de SharePoint a un archivo XML.
Script de PowerShell para exportar la lista de aplicaciones web a XML
Exporte datos de la lista de SharePoint a XML usando PowerShell:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Create new XML File
[System.XML.XMLDocument]$XMLDocument=New-Object System.XML.XMLDocument
#Add XML Declaration
$Declaration = $XMLDocument.CreateXmlDeclaration("1.0","UTF-8",$null)
$XMLDocument.AppendChild($Declaration)
#Create Root Node
[System.XML.XMLElement]$XMLRoot=$XMLDocument.CreateElement("WebApplications")
#Get all web applications and loop through
$WebApps = Get-SPWebApplication
ForEach($webApp in $WebApps)
{
$WebAppElement = $XMLDocument.CreateElement("WebApplication")
$WebAppElement.SetAttribute("Name", $WebApp.DisplayName)
$WebAppElement.SetAttribute("URL", $WebApp.URL)
#Append the data to Root node
$XMLRoot.AppendChild($WebAppElement)
}
# Append Root Node to XML
$XMLDocument.AppendChild($XMLRoot)
#Save File
$XMLDocument.Save("c:\WebApps.xml")
Salida del script:
Inventario de Aplicaciones Web y su Contenido Bases de Datos asociadas a XML
Agreguemos información de la base de datos:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Create new XML File
[System.XML.XMLDocument]$XMLDocument=New-Object System.XML.XMLDocument
#Add XML Declaration
$Declaration = $XMLDocument.CreateXmlDeclaration("1.0","UTF-8",$null)
$XMLDocument.AppendChild($Declaration)
#Create Root Node "WebApplications"
[System.XML.XMLElement]$WebAppRootElement=$XMLDocument.CreateElement("WebApplications")
#Get all web applications and loop through
$WebApps = Get-SPWebApplication
ForEach($webApp in $WebApps)
{
$WebAppElement = $XMLDocument.CreateElement("WebApplication")
$WebAppElement.SetAttribute("Name", $WebApp.DisplayName)
$WebAppElement.SetAttribute("URL", $WebApp.URL)
#Append the WebApplication data to "WebApplications" Node
$WebAppRootElement.AppendChild($WebAppElement)
#Database Element
$DatabaseRootElement = $XMLDocument.CreateElement("Databases")
$ContentDBs = $webApp.ContentDatabases
ForEach($Database in $ContentDBs)
{
$DatabaseElement = $XMLDocument.CreateElement("Database")
$DatabaseElement.SetAttribute("Name", $Database.DisplayName)
$DatabaseElement.SetAttribute("ID", $Database.ID)
#Append the Database elements to "WebApplication" node
$WebAppElement.AppendChild($DatabaseElement)
}
}
# Append Root Node to XML
$XMLDocument.AppendChild($WebAppRootElement)
#Save File
$XMLDocument.Save("c:\WebApps-inventory.xml")
PowerShell para inventariar aplicaciones de servicio de SharePoint a XML
Hagamos un inventario de las aplicaciones de servicio de SharePoint 2016:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Create new XML File
[System.XML.XMLDocument]$XMLDocument=New-Object System.XML.XMLDocument
#Add XML Declaration
$Declaration = $XMLDocument.CreateXmlDeclaration("1.0","UTF-8",$null)
$XMLDocument.AppendChild($Declaration)
#Create Root Node "ServiceApplications"
[System.XML.XMLElement]$ServiceAppRootElement=$XMLDocument.CreateElement("ServiceApplications")
#Get all Service applications and loop through
$ServiceApps = Get-SPServiceApplication
Foreach($ServiceApp in $ServiceApps)
{
$ServiceAppElement = $XMLDocument.CreateElement("ServiceApplication")
$ServiceAppElement.SetAttribute("TypeName",$ServiceApp.TypeName)
$ServiceAppElement.SetAttribute("DisplayName", $ServiceApp.DisplayName)
$ServiceAppElement.SetAttribute("Status", $ServiceApp.Status)
#Get the Account and Proxy Group of the Service App
$ServiceAccountElement = $XMLDocument.CreateElement("ServiceAccount")
$ServiceAccountElement.Set_InnerText($ServiceApp.ApplicationPool.ProcessAccountName)
#Append to "ServiceApplication" node
$ServiceAppElement.AppendChild($ServiceAccountElement)
$ServiceAppProxyElement = $XMLDocument.CreateElement("ProxyGroup")
$ServiceAppProxyElement.Set_InnerText($ServiceApp.ServiceApplicationProxyGroup.FriendlyName)
#Append to "ServiceApplication" node
$ServiceAppElement.AppendChild($ServiceAppProxyElement)
#Append the Service Application data to "ServiceApplications" Node
$ServiceAppRootElement.AppendChild($ServiceAppElement)
}
# Append Root Node to XML
$XMLDocument.AppendChild($ServiceAppRootElement)
#Save File
$XMLDocument.Save("c:\ServiceAppsInventory.xml")
y produce el siguiente resultado:

