Recuperare tutti gli item di una lista SharePoint con PowerShell PnP
Un esempio di come visualizzare i file di una document library SharePoint usando PnP PowerShell tramite il comando Get-PnPListItem
come si vede di default vengono ritornati solo i campi Id, Title e GUID.
Per ritornare dei campi diversi, questi vanno esplicitamente indicati tramite Fields
anche in questo caso i campi ritornati sono gli stessi, anche se il campo GUID è blank. Questo perché non è stato esplicitamente richiesto in Fields.
L'accesso agli altri campi lo si può fare con FieldValues
che ritorna una collection key/value.
In altrenativa si può usare ForEach-Object per accedere in modo puntuale ad ogni singolo campo
Con lo stesso comando posso accedere direttamente ad uno specifico item sia per Id che per GUID
oppure eseguire una query CAML
PowerShell
# connessione a SharePoint
Connect-PnPOnline -Url https://xxxx.sharepoint.com/sites/crisismanagement -UseWebLogin
# recupero degli items della document library
Get-PnPListItem -List Documents
Text
Id Title GUID
-- ----- ----
1 30848b7d-ce44-4441-954f-a951b10c22f8
2 23487a2d-949b-4c2f-9fe2-e0b84dcfd495
Per ritornare dei campi diversi, questi vanno esplicitamente indicati tramite Fields
PowerShell
# connessione a SharePoint
Get-PnPListItem -List Documents -Fields "Title", "FileRef", "FileLeafRef"
Text
Id Title GUID
-- ----- ----
1
2
L'accesso agli altri campi lo si può fare con FieldValues
PowerShell
# connessione a SharePoint
$items = Get-PnPListItem -List Documents -Fields "Title", "FileRef", "FileLeafRef"
$items.FieldValues
Text
Key Value
--- -----
Title
FileRef /sites/crisismanagement/Shared Documents/Ricevuta_2427006.pdf
FileLeafRef Ricevuta_2427006.pdf
MetaInfo vti_parserversion:SR|16.0.0.20711...
_ModerationStatus 0
_Level 1
Last_x0020_Modified 2020-11-28T17:09:34Z
ID 1
UniqueId fd53636c-40ac-4cf7-a2fc-bf595787f652
owshiddenversion 3
FSObjType 0
Created_x0020_Date 2020-11-28T17:08:20Z
ProgId
Modified 28/11/2020 17:09:34
HTML_x0020_File_x0020_Type
CheckoutUser
ScopeId {B7689A97-789F-4B98-B7C0-9007FDF3755E}
Editor Microsoft.SharePoint.Client.FieldUserValue
Title
FileRef /sites/crisismanagement/Shared Documents/Ricevuta_2427004.pdf
FileLeafRef Ricevuta_2427004.pdf
MetaInfo vti_parserversion:SR|16.0.0.20711...
_ModerationStatus 0
_Level 1
Last_x0020_Modified 2020-11-28T17:09:02Z
ID 2
UniqueId db7f7d9c-50a1-4938-9e86-a7056cdd27e1
owshiddenversion 2
FSObjType 0
Created_x0020_Date 2020-11-28T17:08:23Z
ProgId
Modified 28/11/2020 17:09:02
HTML_x0020_File_x0020_Type
CheckoutUser
ScopeId {B7689A97-789F-4B98-B7C0-9007FDF3755E}
Editor Microsoft.SharePoint.Client.FieldUserValue
In altrenativa si può usare ForEach-Object per accedere in modo puntuale ad ogni singolo campo
PowerShell
$items = Get-PnPListItem -List Documents -Fields "Title", "FileRef", "FileLeafRef"
$items | ForEach-Object {
$fileLeafRef = $_["FileLeafRef"]
$fileRef = $_["FileRef"]
Write-host "fileLeafRef = $fileLeafRef , fileRef = $fileRef"
}
Text
fileLeafRef = Ricevuta_2427006.pdf , fileRef = /sites/crisismanagement/Shared Documents/Ricevuta_2427006.pdf
fileLeafRef = Ricevuta_2427004.pdf , fileRef = /sites/crisismanagement/Shared Documents/Ricevuta_2427004.pdf
Con lo stesso comando posso accedere direttamente ad uno specifico item sia per Id che per GUID
PowerShell
# tramite Id
$items = Get-PnPListItem -List Documents -Id 1
#tramite guid
$items = Get-PnPListItem -List Documents -UniqueId 30848b7d-ce44-4441-954f-a951b10c22f8
PowerShell
$queryCaml = @"
<View>
<ViewFields>
<FieldRef Name='Title'/>
<FieldRef Name='Modified'/>
</ViewFields>
<Query>
<Where>
<Eq>
<FieldRef Name='ID'/><Value Type='Counter'>1</Value>
</Eq>
</Where>
</Query>
</View>
"@
$items = Get-PnPListItem -List Documents -Query $queryCaml
Attenzione nella query CAML il campo Id va indicato in maiuscolo ID