Enumere todas as soluções para cada WebApplication
-
10-12-2019 - |
Pergunta
Estou realizando um inventário e preciso obter uma lista de soluções sharepoint (*.wsp) implantadas em cada aplicativo da Web individual e, idealmente, também seria ótimo listar qual pool de aplicativos em qual servidor da Web esse aplicativo da Web pertence para?
Algo assim >>
solution-name.wsp / web-application-name / application-pool-name
Eu tentei usar Obter-SPSolução, mas a saída não contém o nome do aplicativo da web e Get-SPWebApplication não fornece a lista de .wsp para cada aplicativo da web listado.
stsadm -o enumsolutions parece conter informações necessárias, mas não sei como alterar o formato de saída para algo semelhante mencionado acima.
Este é o MS SharePoint Server 2010 em execução no W2K8R2 STD.
Solução
Primeiro, pegue todos os seus aplicativos da web e faça uma iteração por meio deles.Enquanto estiver no loop, imprima o nome do aplicativo da web e o nome do pool de aplicativos.Por último, itere todas as soluções e imprima seus nomes - assim:
$contentWebAppServices = (Get-SPFarm).services |
? {$_.typename -eq "Microsoft SharePoint Foundation Web Application"}
foreach($webApp in $contentWebAppServices.WebApplications)
{
Write-Host "Web Application : " $webApp.name
Write-Host "Application Pool : " $webApp.ApplicationPool.Name
Get-SPSolution | ForEach-Object {
if ($_.LastOperationDetails.IndexOf($webApp.url) -gt 0)
{
Write-Host " Solutions:"
Write-Host " " $_.DisplayName
}
}
}
A saída é semelhante a esta:
Web Application : SharePoint - 1337
Application Pool : SharePoint - 1337
Web Application : SharePoint - 80
Application Pool : SharePoint - 80
Solutions:
customer.intranet.wsp
O primeiro aplicativo web (SharePoint - 1337) não possui soluções implantadas, mas o segundo (SharePoint - 80) possui uma.