´

Como eliminar un .webpart de SharePoint 2010 que no se borra despues de desinstalar la solución via PowerShell

Esta es una copia cruzada del artículo escrito en el blog original:

Como eliminar un .webpart de SharePoint 2010 que no se borra despues de desinstalar la solución via PowerShell

---------------------------------------------------------

Como lo comenté en un artículo anterior una vez se desinstala una solución que contiene un .webpart por alguna razón este .webpart persiste en la Galería de elementos web de SharePoint 2010, para borrarlo hay que utilizar un poco de ‘astucia’ de desarrollador utilizando PowerShell.

 

He creado este sencillo script de PowerShell el cual con solo indicar el url del sitio y el nombre del .webpart es capaz de encontrarlo y borrarlo.

Para mayor funcionalidad el nombre del .webpart lo he dejado como una cadena de expresiones regulares de tal forma que podamos hacer una selección más fléxible delos .webpart que deseamos remover.

 

Como todo, no es perfecto, es susceptible de mejora, una primera mejora sería hacerlo independiente del idioma ya que el nombre de la galería esta establecido por defecto en español pero cambia si utilizas la versión en inglés o en otro idioma.

 

Acá les dejo el script que sin lugar a dudas sacara de apuros a más de uno al rededor de la web.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.WebPartPages")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Publishing")
$url = Read-Host "Ingrese el nombre del servidor"
$wps = Read-Host "Escriba el patrón del webpart"
$SPSite = New-Object Microsoft.SharePoint.SPSite($url)
$SPWeb = $SPSite.OpenWeb()
$WebPartGallery = $SPWeb.Lists["Galería de elementos web"]
$gall = $WebPartGallery.Items | select Name
$count = $gall.Count
$count
for ( $i =0; $i -lt $count;$i++)
{
Write-Host "Actual:" $gall[$i].Name
if ($gall[$i].Name -match $wps)
{
Write-Host "found"
$WebPartGallery.Items.Delete($i)
$SPWeb.Update()
Write-Host "$wp borrado"
}
}
$SPWeb.Dispose()

 

Un ejemplo de uso para eliminar el .webpart del que hablamos en este artículo “Como instalar una solución (.wsp) de SharePoint 2010 via PowerShell” es

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.\borrarWebpart.ps1
GAC Version Location
--- ------- --------
True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.SharePoint\14.0.0.0__71e9bce111e9429c\Microsoft.SharePo...
Ingrese el nombre del servidor: http://localhost
Escriba el patrón del webpart: ^TestWeb.*$
11
Actual: MSContentEditor.dwp
Actual: MSPageViewer.dwp
Actual: MSImage.dwp
Actual: MSMembers.dwp
Actual: MSSimpleForm.dwp
Actual: MSUserDocs.dwp
Actual: MSUserTasks.dwp
Actual: MSXml.dwp
Actual: MSPictureLibrarySlideshow.webpart
Actual: Silverlight.webpart
Actual: TestWebPart_VisualWebPart1.webpart
found
borrado

Estoy imaginando muchas sonrrisas en este momento ! XD

Posted: 24/4/2011 22:51 por Juan Carlos Ruiz Pacheco | con no comments |
Comparte este post: