Obtenga colección de sitios de SharePoint, web y objetos de lista desde GUID
Requisito: En las bases de datos de flujo de trabajo de Nintex, ejecuté una consulta para obtener estadísticas de uso del flujo de trabajo y la consulta proporcionó GUID de objetos SPSite, SPWeb y SPList.
¿Cómo obtener objetos de lista, web y colección de sitios de SharePoint a partir de ID?
Nuestros informes de flujo de trabajo proporcionaron un montón de GUID de sitios, web y otros objetos.
SELECT TOP 100
I.WorkflowName,
I.WorkflowInstanceID,
I.SiteID,
I.WebID,
I.ListID,
I.ItemID,
I.WorkflowInitiator,
I.WorkflowID,
I.State, COUNT(P.WorkflowProgressID) as WorkflowProgressRecords
FROM WorkflowInstance I inner join WorkflowProgress P WITH (NOLOCK)
ON I.InstanceID = P.InstanceID
--WHERE i.State=2
GROUP BY I.WorkflowName, I.WorkflowInstanceID, I.SiteID, I.WebID, I.ListID, I.ItemID, I.WorkflowInitiator, I.WorkflowID, I.State
ORDER BY COUNT(P.WorkflowProgressID) DESC
Bueno, de la consulta SQL obtuvimos los GUID de la colección de sitios de SharePoint, los objetos web y de lista, pero ¿cómo obtenemos las ubicaciones reales de la colección de sitios/sitio/lista? PowerShell viene al rescate. Aquí está el script de PowerShell para obtener la colección de sitios de SharePoint, la web y los objetos de lista desde GUID.
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
#Get-SPWeb cmdlet for MOSS 2007
Function global:Get-SPWeb($SiteGUID, $WebGUID)
{
$site = New-Object Microsoft.SharePoint.SPSite($SiteGUID)
if($site -ne $null)
{
$web=$site.OpenWeb($WebGUID);
}
return $web
}
#GUIDs for Site, Web and List
$SiteGUID = [GUID]("294D0050-19BE-439E-BF87-246F07828DAE")
$WebGUID = [GUID]("AEDA6502-83C5-4967-A4C6-DF26B6F1ABDA")
$ListGUID =[GUID]("1A54DCCD-251A-4B05-A7EC-BF10877C8B90")
#Get the Web
$web = Get-SPweb $SiteGUID $WebGUID
#Get the List
$list = $web.Lists[$ListGUID]
#Get the List title
$list.title
$ListURL = $Web.URL+"/"+$list.RootFolder.URL
write-host $ListURL
Obtener lista a partir de ID de lista:
¿Qué sucede si solo tiene el GUID de la lista y desea obtener los detalles de la lista?
Get-SPSite -Limit ALL | Get-SPWeb -Limit ALL | % {$_.Lists} | ? {$_.ID -eq "LIST-ID"} | Format-Table Title, ParentWebURL, RootFolder
¿Quieres hacer lo contrario? Para obtener el GUID del sitio de SharePoint, enumerar los GUID, consulte: Encuentre los GUID de la aplicación web de SharePoint, la colección de sitios, el sitio, la lista, la vista y las columnas.
