Accedere alle liste di SharePoint tramite PowerShell e i WebService
Questo script in PowerShell 1.0 consente di recuperare informazioni sulle liste utilizzando i Web Service di SharePoint 2007 / 2010 (http://site/_vti_bin/Lists.asmx
).
Dato che utilizza i Web Service, non serve eseguirlo dalle macchine su cui gira SharePoint, si può usare anche da remoto.
L'esempio stampa a video l'elenco di tutte le document library e liste presenti nel sito e poi visualizza i dettagli della lista Calendar. Può tornare utile per recuperare l'ID (guid) della lista necessario per chiamare altri metodi di questo Web Service.
da un risultato simile al seguente
Questo script permette di vedere:
Vedi anche PowerShell: download di una pagina web
Dato che utilizza i Web Service, non serve eseguirlo dalle macchine su cui gira SharePoint, si può usare anche da remoto.
L'esempio stampa a video l'elenco di tutte le document library e liste presenti nel sito e poi visualizza i dettagli della lista Calendar. Può tornare utile per recuperare l'ID (guid) della lista necessario per chiamare altri metodi di questo Web Service.
PowerShell
# get info of sharepoint lists
# File: SgartGetListCollection.ps1
$webUrl = "http://192.168.2.70:2010/Site1"
$listUrl ="/Lists/Calendar"
$user = "administrator"
$password = "pass@word1"
#-----------------------------------------------------
# url of WebService
$url = "$webUrl/_vti_bin/lists.asmx"
# method to invoke
$soapMethod = "http://schemas.microsoft.com/sharepoint/soap/GetListCollection"
# soap message to post
$soapMessage = @"
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetListCollection xmlns="http://schemas.microsoft.com/sharepoint/soap/" />
</soap:Body>
</soap:Envelope>
"@
$wc = new-object System.Net.WebClient
# set credential
$wc.Credentials = new-object System.Net.NetworkCredential($user, $password)
#$wc.Credentials = [System.Net.CredentialCache]::DefaultCredentials
# set correct header
$wc.Headers.Add("Content-Type", "text/xml;charset='utf-8'")
$wc.Headers.Add("SOAPAction", $soapMethod)
# send POST and get result then cast to XML
$responseLists = [xml]$wc.UploadString($url, "POST", $soapMessage)
$wc.Dispose()
# navigate to xml without xpath
$root = $responseLists.Envelope.Body.GetListCollectionResponse.GetListCollectionResult
#$nodes = $root.Lists.ChildNodes
$nodes = $root.Lists.List
write-host "Lists contents of web $webUrl" -f green
$lists = $nodes | select title, DefaultViewUrl
$lists | format-table
write-host "Detail of $listUrl" -f green
$result = $nodes | ?{ $_.DefaultViewUrl -match "$listUrl/.+\.aspx"}
$result | Format-list
Text
Lists contents of web http://192.168.2.70:2010/Site1
Title DefaultViewUrl
----- --------------
Administrative Report Library /AdminReports/Forms/AllItems.aspx
Administrator Tasks /Lists/Administrator Tasks/AllItems.aspx
Announcements /Lists/Announcements/AllItems.aspx
Calendar /Lists/Calendar/calendar.aspx
Content Deployment Jobs /Lists/Content Deployment Jobs/AllItems.aspx
Content Deployment Paths /Lists/Content Deployment Paths/AllItems.aspx
Distribution Groups /Lists/Distribution Groups/AllItems.aspx
Health Analyzer Rule Definitions /Lists/HealthRules/AllItems.aspx
Job Reports /Lists/Job Reports/AllItems.aspx
List Template Gallery /_catalogs/lt/Forms/AllItems.aspx
Master Page Gallery /_catalogs/masterpage/Forms/AllItems.aspx
Resources /Lists/Resources/AllItems.aspx
Review problems and solutions /Lists/HealthReports/AllItems.aspx
Shared Documents /Shared Documents/Forms/AllItems.aspx
Solution Gallery /_catalogs/solutions/Forms/AllItems.aspx
SSA46670f7cab6a4f05b44c4361c7c87ebb /Lists/SSA46670f7cab6a4f05b44c4361c7c87ebb/AllItems.aspx
SSA5c78b1490a2744f3b240bb7da0f2ab42 /Lists/SSA5c78b1490a2744f3b240bb7da0f2ab42/AllItems.aspx
SSAedbe9ac43596497ba2109d1d223b8052 /Lists/SSAedbe9ac43596497ba2109d1d223b8052/AllItems.aspx
Style Library /Style Library/Forms/AllItems.aspx
Theme Gallery /_catalogs/theme/Forms/AllItems.aspx
User Information List /_catalogs/users/detail.aspx
Web Part Gallery /_catalogs/wp/Forms/AllItems.aspx
Detail of /Lists/Calendar
DocTemplateUrl :
DefaultViewUrl : /Lists/Calendar/calendar.aspx
MobileDefaultViewUrl :
ID : {C4D5AEE8-28EE-4EFE-A4DA-A98B1BA204F2}
Title : Calendar
Description : Use the Calendar list to keep informed of upcoming meetings, deadlines, and other impor
tant events.
ImageUrl : /_layouts/images/itevent.png
Name : {C4D5AEE8-28EE-4EFE-A4DA-A98B1BA204F2}
BaseType : 0
FeatureId : 00bfea71-ec85-4903-972d-ebe475780106
ServerTemplate : 106
Created : 20100401 08:57:56
Modified : 20100401 08:57:56
LastDeleted : 20100401 08:57:56
Version : 0
Direction : none
ThumbnailSize :
WebImageWidth :
WebImageHeight :
Flags : 541069312
ItemCount : 0
AnonymousPermMask : 0
RootFolder :
ReadSecurity : 1
WriteSecurity : 1
Author : 1
EventSinkAssembly :
EventSinkClass :
EventSinkData :
EmailAlias :
WebFullUrl : /
WebId : 57b2e6d2-9a0d-4865-a964-e8849be8b66d
SendToLocation :
ScopeId : b6f366d0-5112-4e37-b62a-94f543589113
MajorVersionLimit : 0
MajorWithMinorVersionsLimit : 0
WorkFlowId :
HasUniqueScopes : False
NoThrottleListOperations : False
HasRelatedLists :
AllowDeletion : True
AllowMultiResponses : False
EnableAttachments : True
EnableModeration : False
EnableVersioning : False
HasExternalDataSource : False
Hidden : False
MultipleDataList : False
Ordered : False
ShowUser : True
EnablePeopleSelector : False
EnableResourceSelector : False
EnableMinorVersion : False
RequireCheckout : False
ThrottleListOperations : False
ExcludeFromOfflineClient : False
EnableFolderCreation : False
IrmEnabled : False
IsApplicationList : False
PreserveEmptyValues : False
StrictTypeCoercion : False
EnforceDataValidation : False
MaxItemsPerThrottledOperation : 5000
- come eseguire una chiamata ad un Web Service costruendo un messaggio soap
- eseguire un POST ad un sito e recuperare il risultato in XML
- come gestire in PowerShell i file XML (navigare attraverso i nodi e filtrare)
Vedi anche PowerShell: download di una pagina web