Un esempio di come estrarre una query CAML da una vista di una lista SharePoint. Funziona anche con le web part in pagina in quanto, per ogni web part, viene aggiunta una vista hidden sulla lista, identificabile tramite il suo guid:

PowerShell

#apro il sito 
$w = Get-SPWeb http://sharepoint2013.sgart.local/hd
#prendo la lista
$l = $w.lists["nomeLista"]
#prendo la vista in base al sui guid (funziona anche se è una webpart in pagina)
$w = $l.Views | ?{$_.id -eq "BFB7796A-84DC-496B-936D-6EE01C561EB3"}
#formatto in xml la stringa della query
$s = Format-XML $x
#lo stampo a video
$s
#per sostituire i doppi apici
#$s.Replace('"', "'")
Stampa a video la stringa che rappresenta la query CAML. Da un risultato simile al seguente:

XML

<sgart>
  <OrderBy>
    <FieldRef Name="BlockingProblem" />
    <FieldRef Name="PPSPriority" />
  </OrderBy>
  <Where>
    <And>
      <And>
        <Or>
          <Or>
            <Eq>
              <FieldRef Name="Developer" />
              <Value Type="Integer">
                <UserID Type="Integer" />
              </Value>
            </Eq>
            <Eq>
              <FieldRef Name="RequestExecutor" />
              <Value Type="Integer">
                <UserID Type="Integer" />
              </Value>
            </Eq>
          </Or>
          <Eq>
            <FieldRef Name="RequestManager" />
            <Value Type="Integer">
              <UserID Type="Integer" />
            </Value>
          </Eq>
        </Or>
        <Neq>
          <FieldRef Name="Status" />
          <Value Type="Text">Closed</Value>
        </Neq>
      </And>
      <Neq>
        <FieldRef Name="Status" />
        <Value Type="Text">Completed</Value>
      </Neq>
    </And>
  </Where>
</sgart>

Per funzionare usa questa funzione

PowerShell

function Format-XML ([xml]$xml, $indent=2) 
{ 
    $StringWriter = New-Object System.IO.StringWriter 
    $XmlWriter = New-Object System.XMl.XmlTextWriter $StringWriter 
    $xmlWriter.Formatting = "indented" 
    $xmlWriter.Indentation = $Indent 
    $xml.WriteContentTo($XmlWriter) 
    $XmlWriter.Flush() 
    $StringWriter.Flush() 
    Write-Output $StringWriter.ToString() 
}
che ho preso da questo sito Format-XML
Tags:
C#236 CAML17 PowerShell200 SharePoint498 SharePoint 2013137
Potrebbe interessarti anche: